如何在java中分隔文本区域和图像

我正在使用OCR来识别护照详细信息,因为我使用的是Tesseract Java API。 为了获得更好的准确性,我需要将整个图像(可以是.png,.jpeg,.tiff)划分为文本区域。 是否有任何开源java库将文本区域与图像分开。 请给我任何建议。

最好的办法是使用OpenCV(Java有绑定)。

问题很严重,并且没有适用于所有情况的解决方案。 我会检查像这样的线程的建议,并尝试为您的特定情况找到最佳解决方案。

马文提供了一种完全符合此目的的方法。

public static java.util.List findTextRegions(MarvinImage imageIn, int maxWhiteSpace, int maxFontLineWidth, int minTextWidth, int grayScaleThreshold) 

输入图片:

在此处输入图像描述

输出图像:

在此处输入图像描述

源代码:

 import static marvin.MarvinPluginCollection.*; public class TextRegions{ public static void main(String[] args) { MarvinImage image = MarvinImageIO.loadImage("./res/passport.png"); MarvinImage originalImage = image.clone(); List segments = findTextRegions(image, 15, 8, 30, 150); for(MarvinSegment s:segments){ if(s.height >= 5){ originalImage.drawRect(s.x1, s.y1, s.x2-s.x1, s.y2-s.y1, Color.red); } } MarvinImageIO.saveImage(originalImage, "./res/passport_2.png"); } }