如您在图片中所见,我无法正确识别此类单词
结果我得到了这个:
RMACWI O
12X60
VPFZZOOIK
IADA50527
PORTES
我正在使用这些变量
ocr.SetVariable("tessedit_pageseg_mode", 10);
ocr.SetVariable("tessedit_char_whitelist", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/-,.€");
是否有提高识别度的方法?
后来我对图像进行了二值化,但是结果却很糟糕!
结果:
RMACW1 0
TZXW
VPFZZDWK
IADASDEU
PORTES
答案 0 :(得分:2)
您可以对图像进行预处理,但是通过将OCR引擎更改为Google cloud vision,可以节省大量时间。当我运行您的图片时,它可以完美地检测到文字:
RMAC6010
12X60
VPF3200/K
IADA50527
PORTES
Documentos refer
Enc. Cli EC19/041
Google云的设置有点麻烦,但它们的AI API是世界上最好的。您可以测试图像here。他们具有所有主要语言的客户端库。
答案 1 :(得分:0)
对图像进行裁剪,设定阈值和调整大小可能会有所帮助。 Tesseract最适合在白色背景上的黑色文本。请访问this网站以获取更多信息。
答案 2 :(得分:0)
您可以对二进制图像应用轻微的高斯模糊。这将有助于平滑图像。结果如下:
OCR的结果
RMAC6010
12X60
VPF3200/K
\ADA50527
PORTES
Documentos refe:
Ene. Cli EC 19/041
我在Python OpenCV + Pytesseract中实现了它,但是您可以将相同的策略应用于C#
import cv2
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
# Load image and Otsu's Threshold to get a binary image
image = cv2.imread('1.jpg', 0)
thresh = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
# Gaussian blur and then perform OCR
thresh = cv2.GaussianBlur(thresh, (3,3), 0)
data = pytesseract.image_to_string(thresh, lang='eng', config='--psm 6')
print(data)
cv2.imshow('thresh', thresh)
cv2.waitKey()