Android-从图像中裁剪文本(使用openCV或其他方法)

时间:2018-10-08 10:44:18

标签: java android ocr tesseract crop

我是一个初学者,我正在尝试为OCR流程制作一个android模块。为了优化过程,我尝试自动裁剪图像的文本部分。我一直在努力,但我做不到。我找到了this one之类的一些教程,但它不是Java语言,我的大脑也无法正常工作。任何帮助将不胜感激,我仍在尝试学习。已经研究了几天。

当前使用openCV进行一些后期处理以提高准确性,并从图像中提取数据(某些机器上的收据),我正在使用正则表达式来获取相关数据(数据,时间,机器编号5位数字,以及一些是6位数字,有时它不起作用,这就是我现在能想到的全部内容。

尝试尽可能地改善流程。如果需要的话,我可以提供代码,但这完全是一团糟。我创建了一个单独的android studio项目,仅用于opencv处理。

很长的文字,很抱歉,希望有所改进(我认为我真的是一个初学者)。非常感谢你!

忘记提及-使用TESSERACT进行OCR处理,使用openCV进行图像处理。该应用程序将由不那么精通技术的人使用,我想使用手动裁切工具,但用处不大。 全部在设备上完成,无法连接互联网。

需要裁剪图像的文本部分

附带的代码也可以在文本上创建框(精确度高)

仍在就如何提高准确性提出建议,谢谢!

public Vector<Rect> detectLetters(Mat img){
    Mat img_gray = new Mat();
    Mat img_sobel = new Mat();
    Mat img_threshold = new Mat();
    Mat element = new Mat();
    Mat contourOutput = new Mat();

    Vector<Rect> boundRect = new Vector<>();

    Imgproc.cvtColor(img, img_gray, Imgproc.COLOR_BGR2GRAY);
    Imgproc.Sobel(img_gray, img_sobel, CvType.CV_8U, 1,0,3,1,0,BORDER_DEFAULT);
    Imgproc.threshold(img_sobel, img_threshold, 0, 255, Imgproc.THRESH_OTSU+Imgproc.THRESH_BINARY);
    element = getStructuringElement(MORPH_RECT, new Size(30,30));
    Imgproc.morphologyEx(img_threshold, img_threshold, 3, element);

    List<MatOfPoint> contours = new ArrayList<>();
    Imgproc.findContours(img_threshold, contours, contourOutput, 0, 1);
    Iterator<MatOfPoint> iterator = contours.iterator();

    List<MatOfPoint> contours_poly = new ArrayList<>(contours.size());

    for (int i=0; i<contours.size(); i++){
        if(contours.get(i).toArray().length > 100){
            double epsilon = 0.1*Imgproc.arcLength(new MatOfPoint2f(contours.get(1).toArray()),true);
            MatOfPoint2f approx = new MatOfPoint2f();
            Imgproc.approxPolyDP(new MatOfPoint2f(contours.get(1).toArray()),approx,epsilon,true);
            Rect appRect = Imgproc.boundingRect(contours.get(i));

            if(appRect.width > appRect.height);
            boundRect.add(appRect);
        }
    }
    return boundRect;
}

1 个答案:

答案 0 :(得分:0)

ML Kit Text Recognition是您所需要的吗?