使用Tesseract和OpenCV(Java)从图像中读取文本
我正在尝试制作一个程序,可以读取营养标签上的信息,但是Tesseract在阅读任何东西时遇到了很多问题。我用OpenCV尝试了许多不同的图像处理技术,但似乎没有多大帮助 以下是我的一些好看的尝试(碰巧是最简单的): 输出: 200k],饱和,09 这只是将图像更改为灰度、3x3高斯模糊和大津二值化 如果您能帮助我使用OpenCV或任何其他图像处理库使文本更具可读性,我将不胜感激 放弃使用Tesseract而使用机器学习会更简单吗?首先阅读有关OCR预处理的文章 上述最重要的步骤是图像二值化和图像去噪 以下是一个例子: 原始图像 灰度级 取消锐化标记 二值化 现在准备好应用OCR了吗 JAVA代码使用Tesseract和OpenCV(Java)从图像中读取文本,java,opencv,image-processing,tesseract,Java,Opencv,Image Processing,Tesseract,我正在尝试制作一个程序,可以读取营养标签上的信息,但是Tesseract在阅读任何东西时遇到了很多问题。我用OpenCV尝试了许多不同的图像处理技术,但似乎没有多大帮助 以下是我的一些好看的尝试(碰巧是最简单的): 输出: 200k],饱和,09 这只是将图像更改为灰度、3x3高斯模糊和大津二值化 如果您能帮助我使用OpenCV或任何其他图像处理库使文本更具可读性,我将不胜感激 放弃使用Tesseract而使用机器学习会更简单吗?首先阅读有关OCR预处理的文章 上述最重要的步骤是图像二
Imgproc.cvtColor(original, grey, Imgproc.COLOR_RGB2GRAY, 0);
Imgproc.GaussianBlur(grey, blur, new Size(0, 0), 3);
Core.addWeighted(blur, 1.5, unsharp, -0.5, 0, unsharp);
Imgproc.threshold(unsharp,binary,127,255,Imgproc.THRESH_BINARY);
MatOfInt params = new MatOfInt(Imgcodecs.CV_IMWRITE_PNG_COMPRESSION);
File ocrImage = new File("ocrImage.png");
Imgcodecs.imwrite(ocrImage,binary,params);
/*initialize OCR ...*/
lept.PIX image = pixRead(ocrImage);
api.SetImage(image);
String ocrOutput = api.GetUTF8Text();