【问题标题】:PyTesseract not recognizing decimalsPyTesseract 无法识别小数
【发布时间】:2020-10-05 06:41:51
【问题描述】:

这并不是How to extract decimal in image with Pytesseract 的真正副本,因为这些答案并没有解决我的问题,而且我的用例也不同。

我正在使用 PyTesseract 识别表格单元格中的文本。在识别带小数点的药物剂量时,OCR 无法识别.,但对于其他所有内容都是准确的。我在 Windows 10 上使用 tesseract v5.0.0-alpha.20200328

我的预处理包括使用三次放大 400%、转换为黑白、膨胀和腐蚀、形态和模糊。我已经尝试了所有这些(以及每个单独的)的体面组合,但没有任何东西可以识别.

我尝试了各种值的--psm 以及字符白名单。我相信字体是Sergoe UI

处理前:

处理后:

PyTesseract 输出:25mg »p

处理代码:

import cv2, pytesseract
import numpy as np

image = cv2.imread( '01.png' )
upscaled_image = cv2.resize(image, None, fx = 4, fy = 4, interpolation = cv2.INTER_CUBIC)
bw_image = cv2.cvtColor(upscaled_image, cv2.COLOR_BGR2GRAY)

kernel = np.ones((2, 2), np.uint8)
dilated_image = cv2.dilate(bw_image, kernel, iterations=1)
eroded_image = cv2.erode(dilated_image, kernel, iterations=1)

thresh = cv2.threshold(eroded_image, 205, 255, cv2.THRESH_BINARY)[1]
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
morh_image = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)
            
blur_image = cv2.threshold(cv2.bilateralFilter(morh_image, 5, 75, 75), 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]

final_image = blur_image
text = pytesseract.image_to_string(final_image, lang='eng', config='--psm 10')

【问题讨论】:

  • EasyOCR 有效,但速度很慢

标签: python ocr tesseract python-tesseract


【解决方案1】:

如果您还不确定,请查看此链接

访问https://groups.google.com/g/tesseract-ocr/c/Wdh_JJwnw94/m/xk2ErJnFBQAJ

许多问题的一个主要解决方案是文本高度,我遇到了很多问题但无法弄清楚原因,但似乎将具有正确大小字母的图像发送到 tesseract 解决了许多问题。 而不是放大到随机 % 尝试使用您的图像具有接近 30-40 Px 的字母的数字。

此外,如果您的预处理以某种方式更改“。”变成像 char 这样的噪音,然后它也会被忽略。

【讨论】:

    【解决方案2】:

    我有一个类似的情况,并且能够通过使用图像处理方法和图像放大来增加正确小数的数量。然而,有一小部分小数没有被正确识别。

    我找到的解决方案是更改 pytesseract 的语言设置:

    我使用的是非英语设置,但将配置更改为 lang='eng' 解决了所有剩余问题。

    不过,这可能对原始问题没有帮助,因为设置已经是 eng

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多