无法使用pytesseract读取黑色背景上的白色文本

Unable to read white text on black background using pytesseract

我正在尝试使用 pytesseract 读取并获取黑色背景上的白色文本的位置,但没有取得任何成功。这是我正在处理的图像示例。

代码如下:

import cv2
import pytesseract
from pytesseract import Output

img = cv2.imread("ocr_example.png")
img = cv2.bitwise_not(img)
_, binary = cv2.threshold(img, 150, 255, cv2.THRESH_BINARY)


custom_config = r'--oem 3 --psm 6'
d = pytesseract.image_to_data(binary, output_type=Output.DICT, config=custom_config)

print(d["text"])

这是找到的文本的输出:

['', '', '', '', 'Home', 'Address', '', 'Use', 'Current', 'Location' , '', '>', '', 'Unable', 'to', 'find', 'location']

如果我将黑底白字保存到它自己的文件中并扫描,则可以毫无问题地找到该文本。但是我需要整体获取图片上文字的位置。

我已经尝试在 https://nanonets.com/blog/ocr-with-tesseract/ 等网站上使用许多预处理建议,但似乎没有任何效果。我不介意进行仅找到缺失文本的第二次搜索。

  • 问题是您将 page-segmentation-mode 设置为识别给定图像中的单个统一文本块。 (6)

  • 更改为识别可变大小的单列文本。 (4)

  • 来源

  • 所有你需要将--psm 6更改为--psm 4

  • 现在阅读

Home Address

Enter address here

Use Current Location

Unable to find location

 

DISMISS SAVE

代码:


import cv2
import pytesseract

img = cv2.imread("hm-adrs.png")
img = cv2.bitwise_not(img)
_, binary = cv2.threshold(img, 150, 255, cv2.THRESH_BINARY)
txt = pytesseract.image_to_string(binary, config="--oem 3 --psm 4")
print(txt)