用opencv和tesseractjava识别carattere

问题描述

我正在尝试检测图片中的文字

image

使用代码

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

图片有什么问题?

解决方法

我有一个两步解决方案



当您将 adaptive-threshold 应用于图像时:

enter image description here

现在当您阅读图像时:

€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 无法找到所需的解决方案,则需要应用图像处理。