我想使用pytesseract
库进行手写文本识别,以读取平均尺寸为43 * 45像素的图像中的数字字符。以下示例图像:
预期结果:
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%准确。至少可以提高准确性。
答案 0 :(得分:0)
根据this GitHub issue,tesseract 4.0不支持LSTM模型的白名单字符。您可以通过将Tesseract升级到4.1版本而不是使用旧模型(即--oem
标志)来解决此问题。
或者,您可以尝试使用Robert Harris中this answer建议的标记config='digits'
来强制pytesseract仅返回数字。
This blog article建议创建一个python函数,该函数使用一个简单的正则表达式提取所有数字,而不用随意处理几个标志和版本。