问题描述
使用代码:
MatOfByte mob=new MatOfByte();
Imgcodecs.imencode(".png",src,mob);
byte bb[]=mob.toArray();
BufferedImage bi=ImageIO.read(new ByteArrayInputStream(bb));
String text = tesseract.doOCR(bi);
但是 Tesseract 发现 6,52.
看起来很干净,我不明白 ocr
怎么会失败。
我使用的是 eng
语言:
tesseract.setLanguage("eng");
opencv 4.51 版
tess4j-3.4.8
图片有什么问题?
解决方法
我有一个两步解决方案
-
- 将 psm 模式设置为 6
当您将 adaptive-threshold
应用于图像时:
现在当您阅读图像时:
€1,52
代码:
import cv2
from pytesseract import image_to_string
img = cv2.imread("s6lVY.png")
gry = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
thr = cv2.adaptiveThreshold(gry,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,21,21)
txt = image_to_string(thr,config="--psm 6")
print(txt)
如果使用 pytesseract 无法找到所需的解决方案,则需要应用图像处理。