无法使用 Tesseract 对字母数字图像进行 OCR
Unable to OCR alphanumerical image with Tesseract
我正在尝试使用 pytesseract 读取 python 中的一些字母数字字符串。
我对图像进行了预处理以减少噪音并将它们设为黑白,但我始终无法读取字符串中的数字。
原文:
清理后:
提取的文本:WISOMW
使用的代码:
def convert(path):
image = cv2.imread(path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (3, 3), 0)
thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
invert = 255 - thresh
cv2.imwrite("processed.jpg", invert)
# Perform text extraction
return pytesseract.image_to_string(invert, config="--psm 7")
我已经为 tesseract 尝试了不同的配置选项:
oem
: 试过 1, 3
psm
: 尝试了不同的模式
tessedit_char_whitelist
:限于字母数字字符
鉴于它能可靠地读取字母字符,我觉得我遗漏了一些明显的东西。有什么想法吗?
你们太亲密了。扩张有助于增加 white/decrease 黑色。分辨率低,因此使用小内核进行膨胀。如果您从阈值步骤中删除 _INV,则不需要再进行一次反演。
import cv2
import numpy as np
import pytesseract
img = cv2.imread('wis9mw.jpg', cv2.IMREAD_GRAYSCALE )
img = cv2.GaussianBlur(img, (3, 3), 0)
img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
kernel = np.ones((1,1), np.uint8)
img = cv2.dilate(img, kernel, iterations=1)
cv2.imwrite('processed.jpg', img)
text = pytesseract.image_to_string(img, config="--psm 6")
print(text)
给予
WIS9MW
我正在尝试使用 pytesseract 读取 python 中的一些字母数字字符串。 我对图像进行了预处理以减少噪音并将它们设为黑白,但我始终无法读取字符串中的数字。
原文:
清理后:
提取的文本:WISOMW
使用的代码:
def convert(path):
image = cv2.imread(path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (3, 3), 0)
thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
invert = 255 - thresh
cv2.imwrite("processed.jpg", invert)
# Perform text extraction
return pytesseract.image_to_string(invert, config="--psm 7")
我已经为 tesseract 尝试了不同的配置选项:
oem
: 试过 1, 3psm
: 尝试了不同的模式tessedit_char_whitelist
:限于字母数字字符
鉴于它能可靠地读取字母字符,我觉得我遗漏了一些明显的东西。有什么想法吗?
你们太亲密了。扩张有助于增加 white/decrease 黑色。分辨率低,因此使用小内核进行膨胀。如果您从阈值步骤中删除 _INV,则不需要再进行一次反演。
import cv2
import numpy as np
import pytesseract
img = cv2.imread('wis9mw.jpg', cv2.IMREAD_GRAYSCALE )
img = cv2.GaussianBlur(img, (3, 3), 0)
img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
kernel = np.ones((1,1), np.uint8)
img = cv2.dilate(img, kernel, iterations=1)
cv2.imwrite('processed.jpg', img)
text = pytesseract.image_to_string(img, config="--psm 6")
print(text)
给予
WIS9MW