编辑:我忘了处理解决阅读问题的图像,多亏了纳森。仍然想知道是什么使Tesseract只读取未处理图像的顶部或底部线条(同一图像,两个不同的结果)
原始:
我有一个包含两行文本的图像:
random test image for pytesseract
当我用PIL image打开python(IDLE python 3.6)中的映像并使用pytesseract提取字符串时,它只正确地提取最后一行/最后一行。文本的上面一行是乱序垃圾(请参阅下面的代码部分)
但是,当我使用opencv打开图像并使用pytesseract提取字符串时,它只会正确地提取顶行/上行,同时弄乱第二行/最后一行文本(另请参阅下面的代码部分)
以下是代码:
>>> from PIL import Image, ImageFilter
>>> import pytesseract
>>> pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
>>> import cv2
>>> img = Image.open(r"C:\Users\user\MyImage.png")
>>> img2 = cv2.imread(r"C:\Users\user\MyImage.png", cv2.IMREAD_COLOR)
>>> print(pytesseract.image_to_string(img2))
Pet Sock has 448/600 HP left
A ae eee PER eats ae
>>> print(pytesseract.image_to_string(img))
Le TL
JHE has 329/350 HP left.
当我在img
和img2
上使用pytesseract.image_to_boxes
时,它将为具有不同字母的某些位置显示相同的边界框(仅显示包含相同框的2条提取行)
当我在img
和img2
上同时使用pytesseract.image_to_data
时,它在正确读取的行上显示出非常高(95+)的置信度,而在乱码行上则显示出非常低的(30-)。
Excel table output of image_to_data
编辑:excel表格是img2和img,因此
我摆弄了psm配置值(我都试过了),除了在设置上创建了更多垃圾:5、7、8、9、10、13;还有一些给出了错误:0、2;它给出的结果与默认值(我相信是3)没有什么不同。
我一定是犯了些菜鸟的错误,但我不明白为什么会这样。如果有人能把光照向正确的方向,那就太棒了。
这张图片只是一张适合我的OCR测试的随机图像。没有其他的意图,比试验pytesseract。
每当使用Pytesseract执行OCR时,必须对图像进行预处理,使文本为黑色,背景为白色。我们可以用简单的阈值来实现
Pytesseract的输出
代码
^{pr2}$相关问题 更多 >
编程相关推荐