6

是否有人对执行图像自动裁剪和纠偏的 java 库有建议(例如从平板扫描仪检索的图像)?

4

5 回答 5

6

去偏斜

看看Tess4j(Tesseract 的 Java JNA 包装器)

您可以将ImageDeskew.getSkewAngle()ImageHelper.rotate(BufferedImage image, double angle)结合使用。

在 tess4j 项目Tesseract1Test.java的 test 文件夹上有一个如何使用它的示例

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 <lazy> #90 dog";
    String result = instance.doOCR(bi);
    logger.info(result);
    assertEquals(expResult, result.substring(0, expResult.length()));
}

eurotext_deskew.png

于 2016-03-27T13:42:57.267 回答
4

ImageMagick可以做到这一点;您可以使用ImageMagick Java 绑定自动裁剪运算符可能是您正在寻找的。自动纠偏是一个更难的问题,涉及一些重要的图像处理。我不确定 ImageMagick 是否可以处理。如果您可以使用其他方法计算出倾斜参数,ImageMagick 绝对可以为您取消倾斜。

于 2008-11-07T20:29:25.123 回答
3

我写了一个笔记,一个非常好的deskewer的简单端口。如果图像中有一些文字,效果最好。

于 2010-10-28T12:46:41.547 回答
0

我想有人在Java Advanced Imaging API之上构建了一个库来执行此操作。您可以尝试谷歌搜索“Java Advanced Imaging 纠偏”。

于 2008-11-07T20:31:47.973 回答
0

我编写了一个简单的图像校正应用程序,包括源代码。可在:

http://www.recognition-software.com/image/deskew/

于 2009-10-24T13:25:40.823 回答