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

时间:2016-10-25 09:38:13

标签: java image-processing

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

2 个答案:

答案 0 :(得分:1)

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

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

输入图片:

enter image description here

输出图片:

enter image description here

源代码:

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<MarvinSegment> 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");
    }
}

答案 1 :(得分:0)

您最好的选择是使用OpenCV(Java有绑定)。

问题很严重,并且没有适用于所有情况的解决方案。我会检查来自this one等主题的建议,并尝试为您的特定情况找到最佳解决方案。