Python Tesseract在读取这个极其简单的数字字符串时遇到困难

Python Tesseract在读取这个极其简单的数字字符串时遇到困难,python,string,ocr,tesseract,digits,Python,String,Ocr,Tesseract,Digits,我目前正在用python编写一个脚本,需要使用tesseract来读取如下数字: 仅使用数字和-psm 6(或7)输出5.551 我在其他数字(5.700作品)方面也取得了一些成功,但这个数字给了我很多问题。不幸的是,我的程序需要高精度,但我认为tesseract能够破译如此简单的字符串 我也尝试过使用GOCR,它正确地读取了6.881(耶!),但输出为5.700(boo!) 知道为什么会这样吗 或者更重要的是,我可以做些什么来解决这个问题(最好不用训练tesseract)。欢迎来到OCR的世

我目前正在用python编写一个脚本,需要使用tesseract来读取如下数字:

仅使用数字和-psm 6(或7)输出5.551

我在其他数字(5.700作品)方面也取得了一些成功,但这个数字给了我很多问题。不幸的是,我的程序需要高精度,但我认为tesseract能够破译如此简单的字符串

我也尝试过使用GOCR,它正确地读取了6.881(耶!),但输出为5.700(boo!)

知道为什么会这样吗


或者更重要的是,我可以做些什么来解决这个问题(最好不用训练tesseract)。

欢迎来到OCR的世界!不幸的是,对于一个基本的OCR应用程序来说,即使是那些简单的情况也会有问题。我成功地使用的一种解决方法是,将图像放大(使用imagemagick),然后输入Tesseract。这只在一定程度上有效。您还可以尝试对图像执行标准的形态学操作


根据您的总体要求(数字是否始终使用此字体/大小,背景是否嘈杂等),您可能需要手动将每个数字设置为单独的图像,以确保Tesseract可以处理您正在使用的字体类型。如果它不能在单个数字上工作,则不太可能在您传递给它的任何其他数据上工作

我使用Imagemagick(如果需要,您可以使用其他工具)将其大小增加了一倍,并移除了透明度(替换为白色),然后Tesseract OCR正确地显示了增强图像:

$ convert I1Zau.png -background white -flatten -resize 200% I1Zau_2.png
$ tesseract I1Zau_2.png o.txt
$ cat o.txt.txt 
6.881

图像分辨率太低了。只需重新缩放到300 DPI,我就能得到正确的结果。

相反的结果对我有效:我需要top将图像缩小。数字的格式将始终与上面的格式相同,只是位数有所不同(最多5位)。我将试用imagemagick,看看是否能找到Tesseract喜欢的设置。太棒了,我将用更多的数字来测试,看看会发生什么。@Loocid:我想补充一点,我最近也在使用Tesseract,我今天发现使用imagemagick预处理文件(消除压缩伪影并使大小加倍)可大大提高精度。