2008-11-07 8 views

Répondre

4

ImageMagick peut le faire; vous pouvez utiliser le ImageMagick Java bindings. L'opérateur auto-crop est probablement ce que vous cherchez. Le redressement automatique est un problème beaucoup plus difficile et implique un traitement d'image important; Je ne suis pas sûr si ImageMagick peut gérer cela. Si vous parvenez à comprendre les paramètres d'inclinaison en utilisant autre chose, ImageMagick peut définitivement le déformer pour vous.

1

Je suppose que quelqu'un a construit une bibliothèque sur le Java Advanced Imaging API pour ce faire. Vous pouvez essayer Google pour "Java Advanced Imaging".

+0

à partir de 2012, cette page est maintenant le coup en haut pour cette recherche sur Google. –

+0

@IanMcLaird Hee hee. C'est merveilleusement circulaire. Avez-vous déjà essayé de rechercher "récursivité" sur Google? –

1

Redressement

Jetez un oeil à Tess4j (Java JNA wrapper for Tesseract). Vous pouvez combiner ImageDeskew.getSkewAngle() avec ImageHelper.rotate(BufferedImage image, double angle).

Il est un exemple sur la façon de l'utiliser sur le dossier de test du projet 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())); 
} 

eurotext_deskew.png

Questions connexes