【问题标题】:text embeded image orientation detection using tesseract /tess4j OCR [closed]使用 tesseract /tess4j OCR 的文本嵌入图像方向检测 [关闭]
【发布时间】:2016-02-16 11:32:53
【问题描述】:

我有一个项目来查找嵌入文本的图像旋转角度,我正在使用 Tess4j,所以我怎样才能获得正确的图像方向角度 Tess4j 中是否有任何选项可以以正确的方向旋转图像...

如果我将图像作为输入,那么输出应该是正确定向的图像...第一个图像作为输入,然后输出 2n 个图像,那么我该怎么做...。请帮帮我 input image desire output image

【问题讨论】:

  • 我可以建议如何在 FineReader OCR 引擎中执行此操作。很容易。

标签: java image-processing ocr tesseract tess4j


【解决方案1】:

Tess4J 支持确定图像的倾斜角度和旋转图像。查看其 API documentation 页面了解更多信息。

【讨论】:

    【解决方案2】:

    用于图像方向和页面分割

    public class TestOrientation {
        public static void D() throws Exception {
    
            TessAPI api=LoadLibs.getTessAPIInstance();
            TessBaseAPI handle=TessAPI1.TessBaseAPICreate();
    
            File tiff = new File("C:/Users/atul/Desktop/test1.tif");
            String datapath = "C:/Tesseract/tessdata";
            String language = "eng";
            int expResult = TessPageSegMode.PSM_AUTO_OSD;
            IntBuffer orientation = IntBuffer.allocate(1);
            IntBuffer direction = IntBuffer.allocate(1);
            IntBuffer order = IntBuffer.allocate(1);
            FloatBuffer deskew_angle = FloatBuffer.allocate(1);
    
            BufferedImage image = ImageIO.read(new FileInputStream(tiff)); // require jai-imageio lib to read TIFF
            ByteBuffer buf = ImageIOHelper.convertImageData(image);
            int bpp = image.getColorModel().getPixelSize();
            int bytespp = bpp / 8;
            int bytespl = (int) Math.ceil(image.getWidth() * bpp / 8.0);
            api.TessBaseAPIInit3(handle, datapath, language);
            api.TessBaseAPISetPageSegMode(handle, TessPageSegMode.PSM_AUTO_OSD);
            int actualResult = api.TessBaseAPIGetPageSegMode(handle);
    
            api.TessBaseAPISetImage(handle, buf, image.getWidth(), image.getHeight(), bytespp, bytespl);
            int success = api.TessBaseAPIRecognize(handle, null);
            if (success == 0) {
                TessPageIterator pi = api.TessBaseAPIAnalyseLayout(handle);
                api.TessPageIteratorOrientation(pi, orientation, direction, order, deskew_angle);
                System.out.println("Orientation:" + orientation.get()+
                    "\nWritingDirection:"+Utils.getConstantName(direction.get(), TessWritingDirection.class)+
                    " \nTextlineOrder:" + Utils.getConstantName(order.get(), TessTextlineOrder.class)+
                    "\nDeskew angle: %.4f\n"+deskew_angle.get());
            }
        }
    
        public static void main(String[] args) {
            try {
                D();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    

    【讨论】:

      【解决方案3】:
      BufferedImage image = ImageIO.read(new File("C:\\myimg-tilt.jpg"));
      ImageDeskew id = new ImageDeskew(image);
      image = ImageHelper.rotateImage(image, -id.getSkewAngle());
      

      【讨论】:

      • 您好,欢迎来到 stackoverflow,感谢您的回答。虽然这段代码可能会回答这个问题,但您是否可以考虑添加一些解释来说明您解决了什么问题,以及您是如何解决的?这将有助于未来的读者更好地理解您的答案并从中学习。
      【解决方案4】:

      您可以使用 OpenCV 进行此操作。首先,您需要计算图像的倾斜角度。然后,您可以使用找到的角度旋转图像。

      您可以查看此链接。这真的很有帮助。但是你需要用Java实现它。

      http://felix.abecassis.me/2011/09/opencv-detect-skew-angle/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-08
        相关资源
        最近更新 更多