无法使用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)
我正在尝试使用 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)