是什么原因导致pytesseract根据使用opencv还是枕头来读取双线图像的顶部或底部文本行?

2024-04-26 09:22:26 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑:我忘了处理解决阅读问题的图像,多亏了纳森。仍然想知道是什么使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.

当我在imgimg2上使用pytesseract.image_to_boxes时,它将为具有不同字母的某些位置显示相同的边界框(仅显示包含相同框的2条提取行)

^{pr2}$

当我在imgimg2上同时使用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。


Tags: to字符串代码图像image文本import编辑
1条回答
网友
1楼 · 发布于 2024-04-26 09:22:26

每当使用Pytesseract执行OCR时,必须对图像进行预处理,使文本为黑色,背景为白色。我们可以用简单的阈值来实现


enter image description here

Pytesseract的输出

Pet Sock has 448/600 HP left
JHE has 329/359 HP left.

代码

^{pr2}$

相关问题 更多 >