画像 (フラットベッド スキャナから取得したものなど) の自動トリミングと傾き補正を実行する Java ライブラリの提案はありますか?
5 に答える
傾き補正
Tess4j (Tesseract の Java JNA ラッパー) を見てください。
ImageDeskew.getSkewAngle()とImageHelper.rotate(BufferedImage image, double angle)を組み合わせることができます。
tess4j プロジェクト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 <lazy> #90 dog";
String result = instance.doOCR(bi);
logger.info(result);
assertEquals(expResult, result.substring(0, expResult.length()));
}
ImageMagickはそれを行うことができます。ImageMagick Java バインディングを使用できます。auto-cropオペレーターは、おそらくあなたが探しているものです。自動傾き補正は、はるかに難しい問題であり、かなりの画像処理が必要です。ImageMagick がそれを処理できるかどうかはわかりません。他の何かを使用して傾斜パラメーターを把握できる場合は、ImageMagick で確実に傾斜を補正できます。
私は非常に優れたdeskewerの単純な移植というメモを書きました。画像にテキストが含まれている場合に最適に機能します。
これを行うために、誰かがJava Advanced Imaging APIの上にライブラリを構築したと思います。「Java Advanced Imaging デスキュー」については Google で検索してみてください。