Java image library to deskew and crop images

后端 未结 5 944
谎友^
谎友^ 2020-12-18 05:41

Does anybody have a suggestion for a java library that performs automatic cropping and deskewing of images (like those retrieved from a flatbed scanner)?

5条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-18 06:30

    Deskewing

    Take a look at Tess4j (Java JNA wrapper for Tesseract).

    You can combine ImageDeskew.getSkewAngle() with ImageHelper.rotate(BufferedImage image, double angle).

    There is an example on how to use it on the test folder of the tess4j project Tesseract1Test.java

    public void testDoOCR_SkewedImage() throws Exception {
        logger.info("doOCR on a skewed PNG image");
        File imageFile = new File(this.testResourcesDataPath, "eurotext_deskew.png");
        BufferedImage bi = ImageIO.read(imageFile);
        ImageDeskew id = new ImageDeskew(bi);
        double imageSkewAngle = id.getSkewAngle(); // determine skew angle
        if ((imageSkewAngle > MINIMUM_DESKEW_THRESHOLD || imageSkewAngle < -(MINIMUM_DESKEW_THRESHOLD))) {
            bi = ImageHelper.rotateImage(bi, -imageSkewAngle); // deskew image
        }
    
        String expResult = "The (quick) [brown] {fox} jumps!\nOver the $43,456.78  #90 dog";
        String result = instance.doOCR(bi);
        logger.info(result);
        assertEquals(expResult, result.substring(0, expResult.length()));
    }
    

提交回复
热议问题