OCR无法识别Steam键(Dot Matrix OCR)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OCR无法识别Steam键(Dot Matrix OCR)相关的知识,希望对你有一定的参考价值。

我尝试在Steam键上使用OCR.space的免费ocr api,它有点失败。首先是原始图片尺寸,它没有给我输出; OCR跳过蒸汽钥匙。我已经尝试将图片大小调整为原始大小的50%,但输出不正确。它混合了数字和字母......

有人知道如何解决这个问题吗?这是原始图像(100%大小)

示例图片:enter image description here

答案

在ImageMagick中,您可以使用连接的组件处理图像,以隔离包含“Stream Key”文本的黑盒子。然后将其裁剪掉并翻转。然后将它复合回输入的同一区域。

以下在Unix语法中使用ImageMagick 6.9.10.11 Q16 Mac OSX:

输入:

enter image description here

首先,我必须将内部字段分隔符更改为新的行符号,以便数组的每个元素代表连接组件的完整输出行。然后我在周围添加一个黑色边框并修剪图像。这消除了图像底部的大黑色区域。我还应用了一些形态处理来去除细黑线,因此它们不会贡献我想要提取的黑色区域。然后我使用连通分量列出所有孤立区域并找到第一个(最大)黑色区域,即灰色(0)并提取其边界框。一旦我有了边界框,我就会找到左上角的偏移坐标。然后我处理图像以裁剪该边界框,反转其颜色并将其合成回原始图像。结果是您现在在白色背景上有所有黑色文本。

OLDIFS=$IFS
IFS=$'
'
arr=(`convert image.jpg 
-bordercolor black -border 1 -fuzz 50% -trim +repage 
-morphology close octagon:3 -type bilevel 
+write temp.gif 
-define connected-components:verbose=true 
-connected-components 4 
null: | sed 's/^[ ]*//' | tail -n +2` )
IFS=$OLDIFS
num=${#arr[*]}
for ((i=0; i<num; i++)); do
color=`echo ${arr[$i]} | cut -d  -f5`
bbox=`echo ${arr[$i]} | cut -d  -f2`
[ "$color" = "gray(0)" ] && break
done
echo "$bbox"
xoffset=`echo $bbox | cut -d+ -f2`
yoffset=`echo $bbox | cut -d+ -f3`
xoffset=$((xoffset+1))
yoffset=$((yoffset+1))
echo "$xoffset $yoffset"
convert image.jpg 
( +clone -crop $bbox +repage -negate -contrast-stretch 0x90% ) 
-geometry +${xoffset}+${yoffset} -compose over -composite 
result1.png

这是在将连接的组件应用到它之前的已处理图像。

enter image description here

如果我已保存连接组件的文本输出,它将如下所示:

0: 690x168+0+0 360.0,90.4 70542 gray(255)
296: 520x65+133+41 393.0,72.9 30527 gray(255)
295: 652x69+3+38 133.6,71.0 9992 gray(0)
541: 477x4+0+164 208.1,166.1 1186 gray(0)
371: 12x10+64+66 69.3,69.6 41 gray(255)
209: 7x11+249+12 252.2,17.5 40 gray(0)
207: 7x12+235+12 237.6,17.3 40 gray(0)
248: 11x8+264+15 268.9,18.3 38 gray(0)
245: 6x11+197+15 199.1,19.1 35 gray(0)
...

我们想要第三行,这是第一行包含灰色(0)。

结果:

enter image description here

那样有用吗?如果没有,那么你可以处理result1.png进行一些形态处理以加粗线条,使得点更加连接,然后添加一些不锐化的蒙版来锐化结果。

convert result1.png -morphology open diamond:1 -unsharp 0x1 result2.png

enter image description here

以上是关于OCR无法识别Steam键(Dot Matrix OCR)的主要内容,如果未能解决你的问题,请参考以下文章

ocr文字识别软件

进行OCR识别文本的时候提示PDF文档无法识别

Tesseract OCR 无法识别除法符号“÷”

OCR文本识别软件提示说无法对该语言执行OCR,请将您的OCR语言设置更改为可用的OCR语言是啥问题?

OCR文字识别

为啥 Tesseract OCR 库(iOS)根本无法识别文本?