识别图像上的错误文字

问题描述 投票:0回答:1

这是我的图片:

The image I want to read text from

这是我的代码:

import cv2
import pytesseract

pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract"

img = cv2.imread(r"C:\Users\xxx\Desktop\ImageRecognition\number.jpg") 
window_name = 'Number'
cv2.namedWindow(window_name, 0)
cv2.resizeWindow(window_name, 200, 100)
cv2.imshow(window_name, img)
cv2.waitKey(0)
cv2.destroyAllWindows()
configuration = '-l eng --psm 7'
text = pytesseract.image_to_string(img, config=configuration)

print(text)

运行代码后,我得到如下视图:

view from cv2

但是,我从 PyCharm 打印得到的结果为:

Result from Pycharm compile

我想知道为什么会发生这种情况,我该如何克服这个问题?我想这是由于噪音造成的。但我不知道我应该做什么。

python python-3.x tesseract python-tesseract tesseract-5.x
1个回答
0
投票

这是一个常见问题。正如评论中向您建议的那样,设置灰度和调整大小是实现这一目标的步骤。你提到你已经测试过这个但没有效果。因此,您可以尝试不同的

Page Segmentation Modes
(--psm) 和 OCR 引擎模式 (--oem)。
PSM 7
用于将图像视为单个文本行。这实际上解决了你的问题。

import cv2
import numpy as np
import pytesseract

img = cv2.imread(r"C:\Users\s-degossondevarennes\Downloads\sound.png")

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY_INV)

kernel = np.ones((1, 1), np.uint8)
img_dilated = cv2.dilate(thresh, kernel, iterations=1)

cv2.imshow('Processed Image', img_dilated)
cv2.waitKey(0)
cv2.destroyAllWindows()

configuration = '-l eng --psm 7'
text = pytesseract.image_to_string(img_dilated, config=configuration)

print(text)

您也可以以完全相同的方式使用

easyocr

© www.soinside.com 2019 - 2024. All rights reserved.