【问题标题】:Pytesseract OCR multiple config optionsPytesseract OCR 多个配置选项
【发布时间】:2017-11-20 23:48:21
【问题描述】:

我在使用 pytesseract 时遇到了一些问题。我需要将 Tesseract 配置为接受单个数字,同时也只能接受数字,因为数字 0 经常与“O”混淆。

像这样:

target = pytesseract.image_to_string(im,config='-psm 7',config='outputbase digits')

【问题讨论】:

    标签: python ocr tesseract


    【解决方案1】:

    tesseract-4.0.0a 支持以下psm。如果要识别单个字符,请设置psm = 10。如果你的文字只包含数字,你可以设置tessedit_char_whitelist=0123456789

    Page segmentation modes:
      0    Orientation and script detection (OSD) only.
      1    Automatic page segmentation with OSD.
      2    Automatic page segmentation, but no OSD, or OCR.
      3    Fully automatic page segmentation, but no OSD. (Default)
      4    Assume a single column of text of variable sizes.
      5    Assume a single uniform block of vertically aligned text.
      6    Assume a single uniform block of text.
      7    Treat the image as a single text line.
      8    Treat the image as a single word.
      9    Treat the image as a single word in a circle.
     10    Treat the image as a single character.
     11    Sparse text. Find as much text as possible in no particular order.
     12    Sparse text with OSD.
     13    Raw line. Treat the image as a single text line,
                            bypassing hacks that are Tesseract-specific.
    

    这里是image_to_string 的示例用法,带有多个参数。

    target = pytesseract.image_to_string(image, lang='eng', boxes=False, \
            config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789')
    

    希望这会有所帮助。

    【讨论】:

    • 这不是一个新问题。这是您的解决方案的后续行动,它直接从您提供的内容中推断出来。如果您愿意提及您曾经将参数用于白名单的 tesseract 版本,这将有所帮助。请再看一遍我的评论,你会明白的。
    • 想知道OEM是什么意思的人,请点击这里wilsonmar.github.io/tesseract
    • 我可以请你看看这里的 Tesseract 相关问题:stackoverflow.com/questions/66946835/…?
    【解决方案2】:

    您遇到问题的原因是字符限制在 4.0 版本中不起作用。您必须强制使用旧模式 (oem 0) 才能限制找到的字符。 tesseract 团队中的某个地方存在他们尚未解决的错误。

    【讨论】:

    • 我已经用 oem=0 试过了,但效果不佳。但是有三个选项: tessedit_char_blacklist 不识别的字符黑名单 tessedit_char_whitelist 识别字符的白名单 tessedit_char_unblacklist 要覆盖的字符列表 tessedit_char_blacklist
    • 我认为在 4.1 中已修复?
    【解决方案3】:

    Tesseract 版本 5.0.0-alpha 可以使用以下命令:(使用 psm=13 和 oem=1 或 3)

    pytesseract.image_to_string(export_image ,lang='eng', config='--psm 13 --oem 1 -c tessedit_char_whitelist=ABCDEFG0123456789')

    请注意,采用 eng 训练数据集:https://github.com/tesseract-ocr/tessdata_fast/blob/master/eng.traineddata

    注意:在 +-60x60px 的单字符二进制输入图像上测试

    【讨论】:

      【解决方案4】:

      页面分割模式:

      1. 仅限方向和脚本检测 (OSD)。

      2. 使用 OSD 自动分割页面。

      3. 自动页面分割,但没有 OSD 或 OCR。 (未实施)

      4. 全自动页面分割,但没有 OSD。 (默认)

      5. 假设有一列大小可变的文本。

      6. 假设一个统一的垂直对齐文本块。

      7. 假设一个统一的文本块。

      8. 将图像视为单个文本行。

      9. 将图像视为一个单词。

      10. 将图像视为圆圈中的单个单词。

      11. 将图像视为单个字符。

      12. 稀疏文本。尽可能不按特定顺序查找文本。

      13. 带有 OSD 的稀疏文本。

      14. 原始线。将图像视为单个文本行,绕过特定于 Tesseract 的 hack。

      OCR 引擎模式:

      1. 仅限旧版引擎。
      2. 仅限神经网络 LSTM 引擎。
      3. 旧版 + LSTM 引擎。
      4. 默认,基于可用的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-06-07
        • 1970-01-01
        • 2016-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-13
        相关资源
        最近更新 更多