Extrahieren von Daten aus Tabellen in PDF-Dateien mit Tabula und OpenRefine

Es gibt Tonnen von Daten, die in Tabellen eingeschlossen sind, die in PDF-Essays und -Berichten eingebettet sind. PDFs sind allgegenwärtig, aber es ist schwieriger, die darin enthaltenen Daten zu verwenden, als dies in einer Tabelle der Fall wäre. Selbst wenn Sie die Daten extrahieren können, kann es schwierig sein, konsistente Ergebnisse zu erhalten. Eine Tabelle könnte Linien enthalten, um die Zellgrenzen hervorzuheben, während andere nur weiße Räume haben könnten, um eine Tabellenansicht zu erhalten. Sie können auch in Bezug auf das Enthalten übergreifender Zeilen und / oder Spalten variieren. Häufig besteht die einzige Konstante darin, dass alle Daten enthalten, die Sie extrahieren möchten.

Sie können zwar manuell Daten aus einer Tabelle in einer PDF-Datei extrahieren, dies ist jedoch alles andere als einfach. Es gibt keinen Grund, sich so viel Zeit zu nehmen, wenn es Werkzeuge gibt, die unsere Arbeit einfacher machen. In diesem Tutorial zeige ich Ihnen, wie Sie mit Tabula einfach Tabellen aus der PDF-Datei extrahieren und anschließend die unordentlichen Daten mit OpenRefine in ein besser verwendbares Formular bereinigen.

Warum Tabula??

Jeder, der mit Daten arbeitet, kennt ein häufiges Problem: Sie haben einige interessante Daten für Ihr journalistisches Projekt oder Statistiken zum Erstellen einer schönen Karte gefunden, aber die Daten sind unübersichtlich und in einer PDF-Datei eingeschlossen, die von Ihrem Programm nicht automatisch gelesen werden kann. Daher müssen Sie entweder Datenreihen aus einer PDF-Datei in Excel kopieren oder einen längeren Prozess zum Kopieren und Einfügen ausführen. Diese Art von Handarbeit führt zu Reibung und Sie verlieren viel Zeit.

Als Absolvent der Forschung habe ich den Schmerz durch manuelles Kopieren und Einfügen von Tabellen für meine Doktorarbeit durchgemacht. Ich habe immer von einer Anwendung geträumt, die die Tabelle mit einem Klick aus PDF extrahieren kann. Genau das ist Tabula. Es handelt sich um eine kostenlose, von Java betriebene App, die in einem Webinterface auf Ihrem Computer ausgeführt wird, das Daten aus fast jeder Tabelle in einem PDF-Dokument extrahieren kann. Innerhalb von Sekunden können die Daten extrahiert werden, für die Sie von Hand Stunden für die erneute Eingabe benötigen.

Wie benutze ich Tabula??

Laden Sie zunächst die entsprechende ZIP-Datei für Ihren Computer von der Tabula-Website herunter und entpacken Sie sie in einen Ordner Ihrer Wahl. Stellen Sie sicher, dass Sie auch Java v6 oder 7 installiert haben. Andernfalls können Sie es kostenlos von der Oracle-Website herunterladen. Dieser Link bezieht sich auf die Anzeige / Toolbar-freie Version. Sie müssen sich also keine Sorgen mehr um die Installation weiterer Komponenten machen.

Wenn Sie Tabula starten, wird zunächst ein Befehlsfenster angezeigt, und in wenigen Sekunden sollte sich Ihr Browser automatisch öffnen http://127.0.0.1:8080. Wenn nicht, öffnen Sie Ihren Webbrowser und geben Sie diese URL in das Adressfeld ein. einreichen Ihre PDF-Datei und Tabula verarbeiten Ihre Datei und zeigen Ihnen eine Liste mit Miniaturansichten der Seiten. Suchen Sie nach der Tabelle, die Sie extrahieren möchten. Wenn Sie eine kleine PDF-Datei haben, können Sie die Option "Tabellen automatisch erkennen" aktivieren..

Startbildschirm von Tabula mit Seitenminiaturen und Tabelle, die Sie extrahieren möchten

Klicken Sie und ziehen Sie, um den Bereich der Tabelle auszuwählen. Sobald Sie die Maus loslassen, zeigt Tabula die extrahierte Tabelle in einem benutzerfreundlichen Format. Wenn die Daten unscharf sind, entfernen Sie die Kopfzeilen oder die Fußnoten und vieles mehr. Schließlich können Sie die extrahierte Tabelle entweder als durch Kommas getrennte Werte (CSV) oder durch Tabulatoren getrennte Werte (TSV) herunterladen oder die Daten in die Zwischenablage kopieren. Sobald sich die Daten in einer Kalkulationstabelle befinden, müssen Sie möglicherweise ein wenig bearbeiten, beispielsweise die Kopf- oder Fußnoten korrigieren.

Extrahierte Tabelle aus PDF mit Tabula

Wenn Sie Tabula in Windows herunterfahren müssen, wechseln Sie zu diesem Befehlsfenster und drücken Sie Steuerung-C. Warten Sie, bis eine Meldung angezeigt wird, dass das Herunterfahren abgeschlossen ist. Dieses Fenster schließt möglicherweise automatisch oder schließt es selbst. Wechseln Sie auf dem Mac zur App (klicken Sie mit der rechten Maustaste auf das Symbol im Dock) und drücken Sie CMD-Q. Wenn Sie Mac OS X 10.8 oder höher ausführen, müssen Sie die Gatekeeper-Einstellungen anpassen, um Fehlermeldungen während der Installation zu vermeiden.

Tabula wird nicht immer perfekt sein, und es gibt noch einige Probleme, die gelöst werden müssen. Ab sofort funktioniert es nur für textbasierte PDF-Dateien. Wenn Sie PDF-Dokumente gescannt haben, bleiben Sie also mit manueller Arbeit. Wenn Sie jedoch eine Kopie von Acrobat besitzen, können Sie Bild-PDFs möglicherweise in eine bearbeitbare PDF-Datei konvertieren, die verwendet werden kann arbeite mit Tabula. Wenn Sie über PDF-Dateien mit mehrzeiligen Zeilen verfügen, meldet Tabula häufige Fehler in Tabellen ohne Trennzeichen für Grafikzeilen. Achten Sie darauf, dies zu beachten.

Warum OpenRefine??

Gelegentliche Rechtschreibfehler, zusätzlicher Speicherplatz, zufällige Interpunktion, seltsame Groß- und Kleinschreibung, doppelte Einträge und mehr sind selbstverständlich, wenn Sie Daten aus PDF-Dateien extrahieren. Egal wie schön der Extrakt auf den ersten Blick aussieht, Ihre Daten werden durcheinander geraten irgendein Fehler, Probleme beim Abrufen von Daten, Interoperabilität und Indexierung.

Hier kommt OpenRefine (früher Google Refine) ins Spiel. Es ist ein weiteres kostenloses Tool, mit dem Sie diese Fehler und Ungenauigkeiten der Daten leichter erkennen können. Mit OpenRefine können Sie nicht nur die Genauigkeit Ihrer Daten schnell diagnostizieren, sondern auch auf bestimmte Fehler automatisiert reagieren. Es kann Daten in vielen vorhandenen Zellen in großen Mengen umwandeln, um die Daten zu bereinigen, um weitere Daten aus anderen Quellen zu erweitern und sie in andere Formate zu konvertieren, sodass Sie sie in den gewünschten Apps verwenden können.

So verwenden Sie OpenRefine?

OpenRefine hat wieder ein Webinterface, läuft auf Ihrem Computer und benötigt Java. Der einzige Unterschied ist dieses Mal, es öffnet sich in Ihrem Browser um http://127.0.0.1:3333.

Wenn Sie OpenRefine öffnen, sehen Sie auf der linken Seite drei Optionen: Projekt erstellen Sie können Daten entweder von einem Computer, einer Webadresse, einer Zwischenablage oder einer Google-Tabelle importieren. Offenes Projekt So können Sie zu einem vorhandenen Projekt zurückkehren, das in einer früheren Sitzung erstellt wurde. und Projekt importieren Dadurch können wir ein vorhandenes OpenRefine-Projektarchiv direkt importieren. OpenRefine unterstützt eine Vielzahl von Dateiformaten, darunter TSV, CSV, Excel-Dokumente und sogar XML und JSON - ein Favorit für Web- und Anwendungsentwickler.

Startbildschirm von OpenRefine

Navigieren Sie zu Ihrer exportierten CSV-Datei und klicken Sie auf Nächster. Auf dem nächsten Bildschirm erhalten Sie eine Übersicht über Ihre Datenmenge, wie sie in OpenRefine angezeigt wird. Standardmäßig wird die erste Zeile korrekt als Name einer Spalte analysiert. Eine weitere Option ist das Kontrollkästchen "Anführungszeichen werden verwendet, um Zellen mit Spaltentrennzeichen einzuschließen". Wenn Sie die Option aktiviert lassen, müssen Sie sicherstellen, dass alle Zellenwerte in der Originaldatei in Anführungszeichen stehen. Deaktivieren Sie andernfalls dieses Kästchen, um sicherzustellen, dass die Anführungszeichen nicht von OpenRefine falsch interpretiert werden.

Die anderen Optionen können in einigen Fällen hilfreich sein. Versuchen Sie, sie auszuwählen und die Auswahl aufzuheben, um zu sehen, wie sie sich auf Ihre Daten auswirken. Beachten Sie, wie die Vorschau aktualisiert wird, um diese Änderungen zu berücksichtigen. Stellen Sie außerdem sicher, dass Sie die richtige Kodierung auswählen, um zu vermeiden, dass Sonderzeichen verwechselt werden. Wenn alles in Ordnung ist, geben Sie Ihrem Projekt einen Namen und klicken Sie auf Projekt erstellen.

In OpenRefine geladener Datensatz

Um die verschiedenen Datenbearbeitungsverfahren zu demonstrieren, können Sie entweder Ihr eigenes Dataset verwenden oder ein Demo-Dataset aus dem Github-Repository herunterladen, um es selbst auszuprobieren. Nachdem Ihr Datensatz in OpenRefine geladen wurde, sollten Sie lernen, Daten durch Durchsuchen der verschiedenen Zonen zu untersuchen. Von oben nach unten können Sie vier Zonen beobachten.

In der ersten Zone konnte die Gesamtzahl der Zeilen für eine bestimmte Datei angezeigt werden. In der zweiten Zone können Sie versuchen, zwischen Zeilen und Datensätzen zu wechseln, indem Sie auf eines der Wörter klicken. In diesem Bereich können Sie außerdem auswählen, ob Sie 5, 10 oder 50 Zeilen / Datensätze auf einer Seite anzeigen möchten. Außerdem können Sie von Seite zu Seite navigieren. In der dritten Zone finden Sie hier die erste Zeile, die beim Erstellen des Projekts als Spaltenkopf analysiert wurde. In meinem Datensatz lesen sich die Spalten Universität, Ausstattung, numFaculty und so weiter. Die linke Spalte wird immer aufgerufen Alles und ist in drei Unterspalten unterteilt, die Sterne, Flaggen und IDs enthalten. Jede Spalte enthält ein Menü, auf das Sie durch Klicken auf die kleine Schaltfläche zugreifen können Dropdown-Dreieck. Schließlich zeigt die vierte Zone den tatsächlichen Hauptbereich mit den tatsächlichen Werten der Zellen. Wenn Sie mit der Maus über eine Zelle fahren, können Sie diesen bestimmten Datentyp bearbeiten.

Verschiedene Zonen von OpenRefine

Spalten sind ein wesentlicher Bestandteil von OpenRefine. Standardmäßig werden alle Spalten erweitert. Dies kann umständlich sein, wenn das Projekt viele Spalten enthält. Wenn Sie vorübergehend eine weitere Spalte ausblenden möchten, um die Arbeit an den anderen zu erleichtern, klicken Sie auf die kleine Dropdown-Dreieck in einer beliebigen Spalte, um das Menü anzuzeigen und auszuwählen Aussicht. Hier sehen Sie vier Optionen: Diese Spalte minimieren, Alle anderen Spalten reduzieren, Spalten links reduzieren und Spalten rechts reduzieren.

Spielen Sie mit den einzelnen Spaltenoptionen, bis Sie mit dem Ergebnis zufrieden sind. Um eine Spalte erneut zu erweitern, klicken Sie einfach darauf. In einigen Fällen kann es nützlich sein, die Reihenfolge der Spalten zu ändern, um beispielsweise die zu vergleichenden Spalten zusammenzuführen. Um dies zu erreichen, rufen Sie das Menü einer beliebigen Spalte auf und klicken Sie auf Spalte bearbeiten. Es stehen wieder vier Optionen zur Verfügung: Spalte zum Anfang verschieben, Spalte zum Ende verschieben, Spalte nach links verschieben und Spalte nach rechts verschieben. Wenn Sie die Spalten vollständig neu ordnen möchten, verwenden Sie die aufgerufene Spalte Alles

Das Aussicht Diese Option bietet Ihnen eine schnelle Möglichkeit zum Erweitern oder Reduzieren aller Spalten Spalte bearbeiten bietet Ihnen eine schnelle Möglichkeit, Spalten neu anzuordnen, indem Sie sie ziehen oder unterdrücken, indem Sie sie auf der rechten Seite ablegen, wie im folgenden Screenshot dargestellt.

Spaltenanordnung in OpenRefine

Wenn Ihr Projekt umfangreich ist, sollten Sie als Erstes lernen, wie Sie Daten als visuelle Hilfsmittel sortieren, da durch das Sortieren Ihre Datenmenge leichter zu erkunden und zu bearbeiten ist. Um Ihre Daten nach ihren zu sortieren Universität Namen, wählen Sie Sortieren im Spaltenmenü, um auf den folgenden Bildschirm zuzugreifen. Wenn Sie sich den Screenshot ansehen, können Sie die Zellenwerte nach ihrem Typ sortieren: Text, Zahlen, Datumsangaben und Booleans. Sie können für jeden Typ in unterschiedlicher Reihenfolge sortiert werden.

Beispielsweise kann der Text entweder alphabetisch (a bis z) oder umgekehrt alphabetisch (z bis a) sortiert werden, Boolesche Werte sind dann falsch oder umgekehrt und so weiter. Außerdem können Sie festlegen, wo Fehler und Leerzeichen in Bezug auf gültige Werte gespeichert werden, indem Sie sie in die gewünschte Reihenfolge ziehen. Zum Beispiel könnten Fehler zuerst sortiert werden, um sie leichter zu erkennen, gefolgt von gültigen Werten in mittleren und leeren Werten am Ende.

Daten in OpenRefine sortieren

Eines der Werkzeuge in OpenRefine, die Sie am häufigsten verwenden werden, ist Facettieren. Normalerweise erstellen Sie eine Facette für eine bestimmte Spalte. Die Facette fasst die Zellen in dieser Spalte zusammen, um ein umfassendes Bild Ihrer Daten in der Seitenleiste zu erhalten, und gleichzeitig können Sie Daten nach einer Teilmenge von Zeilen filtern, die Sie in Massen ändern möchten. Es gibt verschiedene Möglichkeiten, Daten zu erfassen und abhängig von den Datenwerten und Ihren Bedürfnissen: Textfacetten für Streicher, numerische Facetten für Zahlen und Termine und individuelle Facetten zur Definition Ihres eigenen Textes und numerischer Facetten.

Textfacette ist ein sehr nützliches Werkzeug, ähnlich dem Filter in einer Kalkulationstabelle. Textfacette gruppiert eindeutige Textwerte in Gruppen. Dies kann uns beim Zusammenführen von Informationen helfen und wir können Werte erkennen, die auf viele verschiedene Arten geschrieben werden können. Jetzt erstellen wir eine Textfacette auf der Land Klicken Sie auf das Dropdown-Menü dieser Spalte und wählen Sie Facette → Text-Facette.

Das Ergebnis dieser Facette wird auf der Registerkarte Facet / Filter auf der linken Seite des Bildschirms angezeigt. Im folgenden Screenshot sehen wir die Spalte Land gruppiert nach den Namen, aber ich fand einige seltsame Einträge wie "US", "USA" und "USA", zusammen mit der ungeraden Zahl "USA". Sind sie nicht alle gleich??

Textfacette in OpenRefine

Sie können diese Abweichungen manuell bearbeiten, müssen dies jedoch nicht. Die Option Cluster hilft Ihnen, diese Art von schmutzigen Daten leicht zu finden und zu beheben. Drücke den Land Spalte Dropdown und navigieren zu Zellen bearbeiten → Cluster und Bearbeiten, OpenRefine zeigt dann ein Dialogfeld an, in dem Sie verschiedene Clustering-Methoden auswählen können, von denen jede verschiedene Keying-Funktionen verwenden kann.

Im Werte im Cluster, Sie sehen die verschiedenen Schreibweisen und wie viele Zeilen eine bestimmte Schreibweise enthalten. Das Verschmelzen? Die Spalte enthält ein Kontrollkästchen. Wenn Sie dieses Kontrollkästchen aktivieren, werden alle Werte in diesem Cluster in den Wert in geändert Neuer Zellenwert Säule. Hier kann ich den neuen Zellenwert manuell als "Vereinigte Staaten von Amerika" eingeben und dann klicken Ausgewählte zusammenführen & schließen Schaltfläche, um alle ausgewählten Cluster zusammenzuführen.

Möglicherweise finden Sie einige weitere Abweichungen im Datensatz. Wenn ja, wählen Sie einen anderen aus Methode aus dem Dropdown-Menü und wählen Sie eine andere Tastenfunktionen. Spielen Sie mit verschiedenen Optionen, bis Sie alle Inkonsistenzen behoben haben. Wenn Sie wissen möchten, wie OpenRefine-Clustering funktioniert, lesen Sie diesen Artikel in seinem Github.

Clustering in OpenRefine

Wenn eine Textfacette eindeutige Textwerte in Gruppen zusammenfasst, fasst eine numerische Facette Zahlen in numerische Bereichsfächer ein. Wir müssen die Daten für die Anzahl der Schüler in der numStudents Säule. Nicht alle Werte sind numerisch und viele von ihnen können zusätzlich zu der tatsächlichen Anzahl der Schüler Text enthalten. Um herauszufinden, welche Einträge korrigiert werden müssen, verwende ich eine numerische Facette.

In dem numStudents Spaltenmenü navigieren Sie zu Facette → Numerische Facette und schau dir an, was in der erscheint Facette / Filter Tab links. Dies zeigt uns ein Histogramm der Werte und listet auch die Anzahl der Einträge pro Typ (numerisch, nicht numerisch, leer, Fehler) auf nicht numerisch Zeilen und deaktivieren Sie die anderen Typen. Wir können bereits einige Probleme feststellen, da einige Zellen "Text neben Zahlen" und verschiedene andere Abweichungen haben. Die numerische Spalte ist also nicht rein numerisch und enthält einige fehlerhafte Daten.

Wir können hier zwei Dinge tun: Verwenden Sie die Textfacette, um alle "Text neben Zahlen" in der linken Seitenleiste aufzulisten. Bewegen Sie dann den Mauszeiger über alle unordentlichen Daten und Sie sehen eine Option namens bearbeiten, Ein Dialogfeld wird geöffnet und der Text wird mit der Rücktaste entfernt. Klicken Sie anschließend auf Sich bewerben. In meinem Datensatz habe ich mit einem einzigen Klick den Text „Great Valley“ aus 560 Zeilen entfernt.

Numerische Facette in OpenRefine

Facetten sind definitiv leistungsfähige Werkzeuge, aber manchmal können Inkonsistenzen in der Zellenspalte auftreten. Die einzige Möglichkeit, Zellen in einer Spalte zu bearbeiten, ist das Aufrufen von Allgemeine Verwandlung Befehl in dieser Spalte; Wählen Sie im Dropdown-Menü der Spalte die Option aus Zellen bearbeiten → Allgemeine Transformation Befehl. Sie werden sehen, dass es hier eine Reihe nützlicher Funktionen gibt, um Ihre Daten zu bereinigen und um sicherzustellen, dass sie konsistent sind. Hier ist der Grund: Manchmal setzen Leute bei der Eingabe von Daten ein Leerzeichen vor oder nach einem Namen. Sie werden es nicht sehen können, aber wenn zwei Datensätze kombiniert werden, interpretiert die Spreadsheet-Software sie als zwei Datensätze. Zum Beispiel unterscheidet sich "Rahul" von "Rahul".

Gehen Sie zu der Spalte, in der Sie Leerzeichen entfernen möchten, und navigieren Sie zu Bearbeiten Sie die Zellen → Common Transform → Schneiden Sie führende und nachgestellte Leerzeichen ab. Ein weiteres häufiges Problem bei Daten ist die inkonsistente Formatierung. Gelegentlich lässt jemand die Groß- / Kleinschreibung nicht zu oder vergisst, einen Namen groß zu schreiben. Diese drei Optionen: in titlecase, in Großbuchstaben und in Kleinschreibung konvertiert alle Zellen in dieser Spalte so, dass sie auf die eine oder andere Weise konsistent formatiert werden.

Allgemeine Transformation in OpenRefine

Eine sehr nützliche Funktion von OpenRefine ist der Umgang mit der Historie aller Änderungen, die seit der Erstellung des Projekts die Daten beeinflusst haben. In der Praxis bedeutet dies, dass Sie niemals Angst haben sollten, Dinge mit dem Dataset auszuprobieren. Fühlen Sie sich jederzeit frei, um mit Ihren Daten zu arbeiten, und wenden Sie eine beliebige Anzahl von Facetten oder Transformationen an, da Sie sie jederzeit rückgängig machen können, wenn Sie feststellen, dass dies ein Fehler war

 Um auf den Projektverlauf zuzugreifen, klicken Sie auf Rückgängig wiederholen Klicken Sie oben links im Bildschirm auf die Registerkarte Filter / Facette, wie im Screenshot gezeigt. Um die Uhr zurückzuschalten, klicken Sie auf den letzten Schritt, den Sie beibehalten möchten, und der Rest wird ausgegraut. Um alle Änderungen abzubrechen und die Daten so wiederherzustellen, wie sie vor der Umwandlung waren, klicken Sie auf 0. Projekt anlegen. Klicken Sie zum Wiederholen auf die Stufe, bis zu der Sie den Verlauf wiederherstellen möchten.

Projektverlauf in OpenRefine

Wenn Sie Ihr Projekt abgeschlossen haben, können Sie die Daten aus einem vorhandenen OpenRefine-Projekt exportieren. Das Export Über das Menü oben rechts im Bildschirm können Sie genau dies tun. Die unterstützten Formate sind: TSV, CSV, Excel-Format, ODF-Arbeitsblatt, JSON- und HTML-Tabelle. Die letzte Option ist nützlich, wenn Sie Ihre bereinigten Daten online veröffentlichen möchten.

Fazit

In diesem Tutorial erfahren Sie, wie Sie Tabula und OpenRefine verwenden. Manchmal werden Sie mit der Komplexität von OpenRefine überwältigt, machen Sie sich jedoch keine Sorgen. Nehmen Sie sich Zeit und denken Sie daran, dass das Arbeiten mit Daten nicht nur Code oder Klicks ist. Sie müssen Ihrer Intuition folgen, um die Daten in bestem Zustand zu erhalten - und Sie können alles rückgängig machen, wenn Sie einen Fehler machen.

Wenn Sie Schwierigkeiten beim Einstieg in Tabula oder OpenRefine haben oder über eindeutige Methoden, die Sie mit anderen teilen möchten, teilen Sie uns dies bitte in den Kommentaren mit.