我想使用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
。
如何使PyteSeract将图像视为唯一的单个数字字符,而不是使用仍将文本读取为字母数字的白名单
PS:我知道OCR不能100%准确。至少精度可以提高
因此,对于this GitHub issue,tesseract 4.0不支持LSTM模型中的白名单字符。您可以通过将Tesseract升级到4.1版本而不是使用旧模型(即
oem
标志)来解决此问题或者,您可以尝试使用this answer中的Robert Harris所建议的标志
config='digits'
,强制PyteSeract只返回数字This blog article建议创建一个python函数,该函数使用一个简单的正则表达式来提取所有数字,而不是使用多个标志和版本
相关问题 更多 >
编程相关推荐