2017-09-05 2 views
0

J'utilise tesseract pour lire le texte d'une image. Comme mon entrée BinaryImage ne serait pas un simple texte sur un fond blanc uni, j'obtiens seulement 50% comme sortie correcte.Comment nettoyer le texte d'une image avant de lire avec tesseract?

Y a-t-il un moyen de pré-traiter une image pour que je puisse obtenir une sortie correcte de tesseract? J'ai déjà essayé l'échelle de gris et la binarisation de l'image en utilisant Otsu's method, mais il n'y avait aucune amélioration. Comme je fais tout cela en utilisant java, il serait utile que quelqu'un puisse partager les détails de n'importe quelle lib java ou des étapes pour obtenir les meilleurs résultats de tesseract. Je ne reçois pas les docs ImageMagick appropriés pour l'utiliser dans mon code Java. Toute aide à ce sujet est appréciée.

sample image (any wireless bill of AT & T)

Répondre

0

J'ai essayé d'optimiser ma sortie par la mise à l'échelle des gris et la binarisation de l'image, mais cela n'a pas été utile. Puis j'ai essayé boofcv pour aiguiser mon image et j'ai obtenu une sortie optimisée à 90%.

avant d'affûter l'image, nous pouvons RESCALE l'image si les résolutions ne sont pas assez grand, en utilisant le code ci-dessous:

public static BufferedImage scale(BufferedImage img, int imageType, int dWidth, int dHeight, double fWidth, double fHeight) { 
BufferedImage img = null; 
if(img != null) { 
    img = new BufferedImage(dWidth, dHeight, imageType); 
    Graphics2D g = img.createGraphics(); 
    AffineTransform at = AffineTransform.getScaleInstance(fWidth, fHeight); 
    g.drawRenderedImage(img, at); 
} 
return img; 

}

dans le cas, tout le monde se coince dans la même situation.

0

Je pense que votre analyse de votre facture peut être à trop faible résolution. Je crois que vous obtiendriez de meilleurs résultats si vous aviez une image à plus haute résolution (dimensions plus grandes). Vous pouvez également essayer d'enregistrer votre analyse dans un format non compressible. Vous pouvez essayer le seuillage de zone locale. Mais je ne pense pas que cela aidera avec un si petit texte. Néanmoins, dans ImageMagick, vous pouvez le faire avec la commande -lat.

convert image.jpg -negate -lat 25x25+10% -negate result.png 

enter image description here

ajuster les valeurs comme on le souhaite. J'ai aussi un script shell bash unix, textcleaner, qui pourrait être meilleur sur d'autres images. Vous pouvez voir des exemples à http://www.fmwconcepts.com/imagemagick/textcleaner/index.php

+0

Merci de votre aide. J'ai trouvé une bibliothèque java très bien écrite pour le traitement d'image. Je suis capable d'optimiser la sortie maintenant. Je vais expliquer plus dans ma réponse. –