2009-11-04 2 views
5

Derzeit, wenn ich ein Seitenobjekt einer PDF-Seite mit pyPdf mache, und extractText(), was passiert, ist, dass Zeilen miteinander verkettet sind. Wenn z. B. Zeile 1 der Seite "Hallo" und Zeile 2 "Welt" enthält, lautet der von extractText() zurückgegebene Text "helloworld" anstelle von "hallo world". Weiß jemand, wie man das repariert oder Vorschläge für eine Arbeit hat? Ich brauche wirklich den Text, um Abstände zwischen den Zeilen zu haben, weil ich Textbergbau auf diesem pdf Text mache und keine Räume zwischen den Zeilen erledigte ...Python und pyPdf - wie man Text von den Seiten extrahiert, so dass es Leerzeichen zwischen den Zeilen gibt

+1

Sie möchten vielleicht einen Blick auf diese SO-Seite werfen: http://StackOverflow.com/Questions/25665/Python-Module-for-Converting-PDF-to-text Es gibt ein paar gute Vorschläge dort! – avelldiroll

Antwort

2

Dieses ist ein allgemeines Problem mit pdf Parsing. Sie können auch nachfolgende Bindestriche erwarten, die Sie in einigen Fällen beheben müssen. Ich habe einen Workaround für eines meiner Projekte entwickelt, das ich hier kurz beschreiben werde:

Ich habe pdfminer verwendet, um XML aus PDF zu extrahieren und auch verkettete Wörter im XML zu finden. Ich extrahiert die gleiche PDF als HTML und HTML können durch die Linien der folgenden regulären Ausdruck beschrieben werden:

<span style="position:absolute; writing-mode:lr-tb; left:[0-9]+px; top:([0-9]+)px; font-size:[0-9]+px;">([^<]*)</span> 

Die Spannweiten positioniert sind absolut und haben einen Top-Stil, dass Sie, wenn ein Zeilenumbruch passiert ermitteln können. Wenn ein Zeilenumbruch stattgefunden hat und das letzte Wort in der letzten Zeile keinen nachgestellten Bindestrich hat, können Sie das letzte Wort in der letzten Zeile und das erste Wort in der aktuellen Zeile trennen. Es kann in den Details schwierig sein, aber Sie können möglicherweise fast alle Textanalysefehler beheben.

Darüber hinaus möchten Sie möglicherweise eine Wörterbuchbibliothek wie enchant über Ihren Text ausführen, Fehler finden und wenn das von dem Wörterbuch vorgeschlagene Update wie das Fehlerwort ist, aber mit einem Leerzeichen irgendwo, das Fehlerwort ist wahrscheinlich ein Parsing-Fehler und kann mit dem Vorschlag der Wörterbücher behoben werden.

Parsing PDF saugt und wenn Sie eine bessere Quelle finden, verwenden Sie es.

Verwandte Themen