首页 > 解决方案 > 使用 opencv 和 tesseract (java) 识别 carattere

问题描述

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

使用代码:

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

图片有什么问题?

标签: opencvtesseractthreshold

解决方案


我有一个两步解决方案



当您应用于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 找不到所需的解决方案,则需要应用图像处理。


推荐阅读