如何在小图像中使用pytesseract改善手写文本识别?

时间:2020-06-26 11:34:17

标签: python image-processing ocr tesseract

我想使用pytesseract库进行手写文本识别,以读取平均尺寸为43 * 45像素的图像中的数字字符。以下示例图像:
image 1 image 2 image 3

预期结果:

9
1
4

我想从图像中得到一个数字字符。

我已经在下面尝试过此代码

import pytesseract

# loop through images
print(pytesseract.image_to_string("text.jpg", config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789'))

但实际结果是,我得到的准确度不到50%甚至更低,有些数字读得好,有些数字在单个图像中读了2个字符,有些没有读。
删除-c tessedit_char_whitelist = 0123456789配置时,将得到字符4\和字母g
如何使Pytesseract将图像视为唯一的单个数字字符,而不是使用仍将文本读取为字母数字的白名单?

PS:我知道OCR不能100%准确。至少可以提高准确性。

1 个答案:

答案 0 :(得分:0)

根据this GitHub issue,tesseract 4.0不支持LSTM模型的白名单字符。您可以通过将Tesseract升级到4.1版本而不是使用旧模型(即--oem标志)来解决此问题。

或者,您可以尝试使用Robert Harristhis answer建议的标记config='digits'来强制pytesseract仅返回数字。

This blog article建议创建一个python函数,该函数使用一个简单的正则表达式提取所有数字,而不用随意处理几个标志和版本。

相关问题