2017-11-14 2 views
0

Ich hatte einige Probleme beim Extrahieren des Textes aus einem Dokument mit PDFBox in Android. Aber der Parser scheint gut zu funktionieren (oder zumindest interpretiere ich das so); googeln "parsed = COSObject" liefert leider keine relevanten Ergebnisse (für einige Dokumente ist der Logcat gespammt und scheint es nicht zu geben schalte diesen Putput aus)). getCharactersByArticle gibt eine leere Ausgabe aus diesem Dokument zurück, d. vectorlistoft ist leer.PDFBox Parser scheint zu analysieren, aber leere Ausgabe von Text Stripper

ich hochgeladen haben, das Dokument zu: https://ufile.io/cnvoq

Für die meisten anderen Dokumente, die ich versucht habe, funktioniert die Textextraktion in Ordnung, oder bekomme ich Fehler in keinem Zusammenhang mit dieser. Aber nicht hier.

Hier ist das entsprechende Code-Snippet.

private void extractTextPosition() throws FileNotFoundException, IOException { 
    FileInputStream stream = new FileInputStream(var1); 
    PDFParser parser = new PDFParser(stream); 

    parser.parse(); 
    Log.d("Parser has ","parsed"); 
    StringWriter outString = new StringWriter(); 
    CustomPDFTextStripper stripper = new CustomPDFTextStripper(); 
    stripper.setStartPage(currentPage); 
    stripper.setEndPage(currentPage); 
    stripper.setSortByPosition(true); 

    try { 
     stripper.writeText(parser.getPDDocument(), outString); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
Vector<List<TextPosition>> vectorlistoftps = stripper.getCharactersByArticle(); 
} 

CustomPDFTextStripper ist die gleiche wie PDFTextStripper (ich es geändert hatte, aber alle Änderungen kommentiert worden sind).

Here is the logcat output

Jede Hilfe ist willkommen.

Antwort

0

Das betreffende PDF enthält keinen Text.

Ok, wenn man es betrachtet, sehen Sie Text Glyphen, aber sie sind eigentlich nicht gezogen Zeichnung mit Textbefehlen (die Zeichenfolgen in einigen Codierung nehmen und die passenden Glyphen zeichnen), sondern jeder Buchstabe Glyphe gezeichnet mit individuellen Vektorgrafiken Operationen (bewegen zu, Linie zu, Kurve zu, füllen, ...).

(Sie können auch nicht kopieren & den Text in Adobe Reader einfügen, können Sie nicht einmal Zeichen es für das Kopieren, weil es einfach kein Text zu markieren.)

Textextraktion als PDFTextStripper durch die PDFBox getan (oder ähnliche Textextraktionsklassen anderer PDF-Bibliotheken) funktioniert nur für Text, der mit Textzeichenkommandos gezeichnet wird, indem deren String-Argumente dekodiert werden.

Ihr PDF wird höchstwahrscheinlich OCR für den Textabruf benötigen.

+0

Vielen Dank. Ich habe nicht bemerkt, dass das Teilen des Originaldokuments, von dem es nur ein paar Seiten sind, den Text auf seinen Seiten in Bilder verwandelt hat. Ich mag solch unvorhersehbares Verhalten nicht. Ich brauche vielleicht einen besseren PDF-Splitter ... –

+0

Das ist nicht das natürliche Ergebnis der Aufteilung von PDFs, es erfordert Arbeit, dies zu tun. Das scheint also ein besonderes "Feature" des verwendeten Splitters gewesen zu sein. In der Tat wollen einige Leute dieses Verhalten, weil sie nicht wollen, dass andere den Text ihrer pdfs leicht extrahieren können. – mkl