2017-10-06 4 views
0

J'utilise iText java TextExtraction pour lire le texte d'un fichier PDF. J'utilise le code ci-dessous et il fonctionne très bien pour PDF en anglais Maintenant, j'ai PDF contenant des données sous forme d'image. Je souhaite lire les données de cette imageLire les données de l'image en PDF

public class pdfreader { 
    public static void main(String[] args) throws IOException, DocumentException, TransformerException { 
     String SRC = ""; 
     String DEST = ""; 

     for (String s : args) { 
      SRC = args[0]; 
      DEST = args[1]; 
     } 
     File file = new File(DEST); 
     file.getParentFile().mkdirs(); 
     new pdfreader().readText(SRC, DEST); 
    } 

    public void readText(String src, String dest) throws IOException, DocumentException, TransformerException { 
     try { 
       PdfReader pdfReader = new PdfReader(src); 
       PdfReaderContentParser PdfParser = new PdfReaderContentParser(
         pdfReader); 
       PrintWriter out = new PrintWriter(new FileOutputStream(
         dest)); 
       TextExtractionStrategy textStrategy; 
       for (int i = 1; i <= pdfReader.getNumberOfPages(); i++) { 
        textStrategy = PdfParser.processContent(i, 
          new SimpleTextExtractionStrategy()); 
        out.println(textStrategy.getResultantText()); 
       } 
       out.flush(); 
       out.close(); 
       pdfReader.close(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

Répondre

0

iText ne prend pas en charge l'OCR pour extraire le texte des images. Essayez d'utiliser Tesseract ou autre chose.

+0

Puis-je extraire une image à partir du PDF en utilisant iText – hrishi

+0

Oui, vous pouvez extraire une image à partir d'un fichier pdf avec iText, puis envoyer cette image à Tessaract, mais ce n'était pas votre question. –

+0

Je pensais d'abord extraire l'image, puis lire les données de l'image – hrishi

1

Vous pouvez implémenter un flux de travail OCR avec iText. Comme Amedee l'a déjà laissé entendre, c'est quelque chose que nous avons essayé chez iText, avec des résultats très prometteurs.

L'algorithme (haut niveau):

  1. Mettre en oeuvre IEventListener pour analyser les pages de votre document
  2. Attention aux événements ImageRenderInfo, ils sont tirés lorsque l'analyseur PDF frappe une image
  3. Vous pouvez appeler getImage() sur l'événement et, finalement, obtenir une image tamponnée
  4. Envoyer l'image tamponnée à Tesseract
  5. Appliquer la transformation de coordonnées (tesseract n'utilise pas le même co ordonner l'espace comme iText)
  6. Maintenant que vous avez le texf dans l'image, et l'emplacement, vous pouvez utiliser iText pour superposer du texte sur votre PDF. Ou simplement l'extraire.
+0

Est-ce que l'OCR fonctionnera sur les images numérisées? – hrishi

+1

Oui, c'est un peu le point. –

0

Si une solution en ligne est acceptable, vous pouvez utiliser cette API en ligne PDF OCR. C'est gratuit pour les 3 premières pages par document.

Si vous extrayez d'abord l'image, vous pouvez également utiliser other OCR APIs.