【问题标题】:Pytesseract OCR wrong text recognitionPytesseract OCR 错误文本识别
【发布时间】:2021-01-21 13:22:57
【问题描述】:

当我使用 Pytesseract 识别这张图片中的文字时,Pytesseract 返回 7A51k 但这张图片中的文字是 7,451k.

如何使用代码而不是提供更清晰的源图像来解决此问题?

我的代码

import pytesseract as pytesseract
from PIL import Image
pytesseract.pytesseract.tesseract_cmd = 'D:\\App\\Tesseract-OCR\\tesseract'

img = Image.open("captured\\amount.png")
string = pytesseract.image_to_string(image=img, config="--psm 10")

print(string)

【问题讨论】:

  • 有时 OCR 可能无法找到文本。但在某些情况下,通过几个小技巧可以提高成功率。最广为人知的技巧之一就是简单地调整图像大小。你可以试试:stackoverflow.com/questions/43382174/…
  • 但是图片太小了,调整大小时会变得模糊
  • 你可以试试倒置图像。

标签: python ocr python-tesseract


【解决方案1】:

我有一个两步解决方案


    1. 调整图片大小
    1. 应用阈值。

    1. 调整图像大小
    • 输入图像太小,无法识别数字、标点和字符。增加维度将获得准确的解决方案。
    1. 申请threshold
    • 阈值将显示图像的特征。

    • 当您应用阈值时,结果将是:

当你读取阈值图像时:

7,451k

代码:


import cv2
from pytesseract import image_to_string

img = cv2.imread("4ARXO.png")
(h, w) = img.shape[:2]
img = cv2.resize(img, (w*3, h*3))
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thr = cv2.threshold(gry, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
txt = image_to_string(thr)
print(txt)

【讨论】:

    【解决方案2】:

    如果调整大小后图像模糊没有问题,可以阈值,并按照AlexAlex的建议进行反转:

    输出:7,451k

    import numpy as np
    import pytesseract
    import cv2
    
    # Read Image
    gray = cv2.imread('2.png', 0)
    
    # Resize
    gray = cv2.resize(gray, (600,200))
    
    # Inverting
    gray = 255 - gray
    emp = np.full_like(gray, 255)
    emp -= gray
    
    # Thresholding
    emp[emp==0] = 255
    emp[emp<100] = 0
    
    text = pytesseract.image_to_string(emp, config='outputbase digits')
    
    print(text)
    

    【讨论】:

      猜你喜欢
      • 2020-06-22
      • 2016-10-11
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      • 2015-09-17
      • 1970-01-01
      • 2016-05-27
      相关资源
      最近更新 更多