2016-06-01 28 views
-1

ich ein pdf in PDFBox bin Parsen von ihm den ganzen Text zu extrahierenPDFBox gibt nicht richtig Ausgang

public static void main(String args[]) { 
    PDFTextStripper pdfStripper = null; 
    PDDocument pdDoc = null; 
    COSDocument cosDoc = null; 
    File file = new File("C:\\Users\\admin\\Downloads\\Airtel.pdf"); 
    try { 
     PDFParser parser = new PDFParser(new FileInputStream(file)); 
     parser.parse(); 
     cosDoc = parser.getDocument(); 
     pdfStripper = new PDFTextStripper(); 
     pdDoc = new PDDocument(cosDoc); 
     pdfStripper.setStartPage(1); 
     pdfStripper.setEndPage(1); 
     String parsedText = pdfStripper.getText(pdDoc); 
     System.out.println(parsedText); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    } 

aber es ist nicht jeden Text in der Ausgabe Hilfe geben

Antwort

0

PDFBox extrahiert Text ähnlich wie Adobe Reader kopiert & Pasten Text.

Wenn Sie Ihr Dokument in Adobe Reader öffnen und < Ctrl-A> drücken, um den gesamten Text zu markieren (Sie werden sehen, dass kaum etwas markiert ist) und & kopieren und in einen Editor einfügen, finden Sie den Adobe Reader entnimmt auch kaum etwas.

Der Grund, warum weder PDFBox noch Adobe Reader (noch ein anderer normaler Textextraktor) den Text aus Ihrem Dokument extrahiert, ist, dass darin praktisch kein Text enthalten ist! Der "Text", den Sie sehen, wird nicht mit Textzeichnungsoperationen gezeichnet, sondern stattdessen mit den Umrissen jedes "Zeichens" als Pfad gezeichnet und füllt den Bereich in diesem Pfad. Daher gibt es für einen Textextraktor keine Hinweise darauf, dass es überhaupt Text gibt.

In Ihrem Dokument befinden sich tatsächlich zwei Zeichen aus echtem Text, das "-" - Zeichen zwischen den Feldern "Vorheriger Saldo" und "Zahlungen" und das "-" - Zeichen zwischen den Feldern "Zahlungen" und "Anpassungen" . Und selbst diese zwei Zeichen werden nicht wie gewünscht extrahiert, weil die Schriftart nicht die Information liefert, welche Unicode-Codepunkte diese Zeichen darstellen.

Ihre praktisch einzige Möglichkeit, den Textinhalt des Dokuments zu extrahieren, besteht darin, OCR auf das Dokument anzuwenden.

+0

danke .. OCR mit Tess4j wird in Ordnung sein ?? – Mudit

+0

Ich würde auch Tesseract ausprobieren, aber ich habe keine Erfahrungen aus erster Hand damit. – mkl

+0

tesseract, abbyy, asprise alle von ihnen sind in C++ gebaut. Gibt es irgendeine Bibliothek, die rein in Java gebaut ist? – Mudit