【问题标题】:How to improve handwritten text recognition using pytesseract in small image?如何在小图像中使用 pytesseract 改进手写文本识别?
【发布时间】:2020-10-17 00:04:44
【问题描述】:

我想使用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% 准确。至少准确率可以提高。

【问题讨论】:

    标签: python image-processing ocr tesseract


    【解决方案1】:

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

    或者,您可以尝试使用Robert Harristhis answer 中提出的标志config='digits' 来强制您的pytesseract 只返回数字。

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

    【讨论】:

    • 我认为config=digits 仍然不会将图像视为仅数字。但只能以不同的方式列入白名单
    猜你喜欢
    • 2020-06-22
    • 2019-12-04
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 2017-09-10
    • 2021-03-30
    • 1970-01-01
    相关资源
    最近更新 更多