Frage

Ich habe eine sehr große PDF-Datei (200.000 KB oder mehr), die eine Reihe von Seiten mit dem Inhalt nichts enthält, aber Tabellen. Ich möchte irgendwie mit diesen Daten analysieren mit Ruby, und importieren Sie die resultierenden Daten in einer MySQL-Datenbank.

Kennt jemand irgendwelche Verfahren für diese Daten Ziehens des PDF aus? Die Daten werden in der folgenden Weise formatiert:

Name | Adresse | Cash Berichtet | Jahr Berichtet | Inhaber Name

Manchmal überläuft das Feld Name in das Adressfeld, in welchem ??Fall die verbleibenden Spalten auf der folgenden Zeile angezeigt werden.

Aufgrund der unregelmäßigen Format, ich habe auf Bezifferung dieses heraus stecken. Am allerwenigsten, könnte jemand Punkt mich in einer Ruby-PDF-Bibliothek für diese Aufgabe?

UPDATE: Ich habe versehentlich eine falsche Daten zur Verfügung gestellt! Die tatsächliche Größe der Datei ist 300 MB oder 300.000 KB. Ich habe die Änderung darüber zu reflektieren.

War es hilfreich?

Lösung

Ich nehme an, Sie Textausschnitte ohne Probleme Copy'n'Paste können, wenn Ihr PDF in Acrobat Reader oder einem anderen PDF-Viewer geöffnet wird?

Bevor Sie versuchen, programmatisch zu analysieren und zu extrahieren Text aus einem solchen Monster-Dateien (auch wenn es 200 MByte nur - für einfachen Text in Tabellen, die huuuuge ist, es sei denn, Sie 200000 Seiten haben ...), ich würde wie folgt vorgehen:

  1. Versuchen Sie, die Datei zuerst durch erneute Destillation es zu sanieren.
  2. Versuchen mit verschiedenen CLI-Tool, den Text in eine TXT-Datei zu extrahieren.

Dies ist eine Sache von Minuten. Schreiben eines Ruby-Programm, dies zu tun, ist sicherlich eine Frage von Stunden, Tagen oder Wochen (abhängig von Ihrem Wissen über die PDF-Dateiformat Interna ... Ich vermute, Sie haben nicht viel Erfahrung, dass noch) nicht.

Wenn "2." Arbeiten, können Sie auf halber Strecke bereits geschehen. Wenn es funktioniert, wissen Sie auch, dass es programmatisch Ruby tut, ist ein Job, der kann im Prinzip gelöst werden. Wenn „2“ nicht funktioniert, wissen Sie, es kann extrem schwierig sein, programmatisch zu erreichen.

Sanitize die 'Monster.pdf':

Ich schlage vor, Ghost . Sie können auch Adobe Acrobat Distiller verwenden, wenn Sie Zugriff darauf haben.

gswin32c.exe ^
  -o Monster-PDF-sanitized ^
  -sDEVICE=pdfwrite ^
  -f Monster.pdf

(Ich bin gespannt, wie viel die einzelne Befehlsausgabe PDF schrumpfen wird, wenn mit dem Eingang verglichen.)

Extrahieren von Text aus PDF:

Ich schlage ersten Versuch pdftotext.exe ( aus den XPDF Leute ). Es gibt noch andere, etwas unbequem Methoden zu Verfügung, aber dies könnte den Job schon:

pdftotext.exe ^
   -f 1 ^
   -l 10 ^
   -layout ^
   -eol dos ^
   -enc Latin1 ^
   -nopgbrk ^
   Monster-PDF-sanitized.pdf ^
   first-10-pages-from-Monster-PDF-sanitized.txt

Dies wird nicht alle Seiten extrahieren, sondern nur 1-10 (für Proof of Concept, um zu sehen, ob es überhaupt funktioniert). Um von jeder Seite zu extrahieren, lassen Sie die -f 1 -l 10 Parameter ab. Möglicherweise müssen Sie die Codierung optimieren, indem die Parameter auf -enc ASCII7 Ändern (oder UTF-8, UCS-2).

Wenn das nicht funktioniert, die quick'n'easy Art und Weise (weil, wie es manchmal geschieht, einige Schriftarten in den Original-PDF-Anwendungen „custom Vektor kodiert“) können Sie eine neue Frage stellen sollen, beschreiben die Details Ihrer Erkenntnisse so weit. Dann brauchen Sie größere Kalibern greifen, um das Problem abzuschießen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top