[英]Need help finding the correct config for Pytesseract be able to recognize this text
[英]Unable to recognize correct digit on Pytesseract
我无法使用 Pytesseract 识别我想要的数字,我做错了什么吗?
我的代码
import cv2
from pytesseract import pytesseract
img = cv2.imread('foo.png')
for i in range(6,14):
text:str = pytesseract.image_to_string(img, config=f'--oem 3 --psm {i} digits').replace('\n','')
print(f"psm {i}: {text}")
我的输入图像
图片 1
结果
psm 6:
psm 7:
psm 8:
psm 9:
psm 10:
psm 11:
psm 12: 4
psm 13:
图 2
图 2
结果
psm 6: .4
psm 7:
psm 8:
psm 9:
psm 10:
psm 11:
psm 12:
psm 13:
图 3
结果
psm 6: 4
psm 7: 4
psm 8: 4
psm 9: 4
psm 10: 4
psm 11: 4
psm 12:
psm 13: 4
我怎样才能得到我想要的结果? 感谢您的帮助。
所有图像的高度均为 252 像素,最小宽度为 240 像素。
这里有一些尝试。
您使用的是孤立的数字,因此没有上下文可以帮助识别器,也没有字典的帮助。 从英文句子开始,然后 go 到英文单词,以验证一切正常。 然后尝试更难的孤立字母/数字任务。
尝试在图像上运行高斯模糊,将其阈值化为二进制,并要求对其进行识别。 或者,几乎是同一件事,通过简单地从 252 像素缩小到更小的东西来减少“颠簸”的伪影。 请记住,Tesseract 是在 300 dpi 和 600 dpi 的大约 8 到 16 pt 类型的图像上训练的。 矛盾的是,超大图像可能不利于识别。
您的一些图像看起来可能会被一些非零的 theta 扭曲。 考虑去偏移。 或者更好的是,考虑以各种分辨率生成地面实况图像,这些图像具有零偏斜。 Ghostscript 是一种流行的实现方式。
请更新问题以解释您使用的是哪种 Ocr 引擎模式。 也许3
是 OEM_TESSERACT_LSTM_COMBINED ? 您确定需要指定选项吗? 也就是说,当我们让它默认时,我们会看到更差的性能吗?
哇,确实有很多页面分割模式,如上所述。 你没有为引擎提供太多上下文,对于孤立的数字,如果你在图像中写“1 2 3”,甚至是“123”。 与您的示例个位数图像相比,引擎有更好的机会验证其对字体大小的估计,因此请考虑特定的 PSM 擅长什么。 并注意提供能够发挥这种优势的形象。 一旦我们看到一些相邻的字符,下行和基线的估计就会好得多。
抱歉,没有简单的答案。 看起来你前面有一些实验。 请让我们知道您的发现!
我从命令行运行 tesseract,得到这个 output:
>tesseract 7.png - --psm 8
7
>tesseract 3.png - --psm 8
3
>tesseract 9.png - --psm 8
9
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.