PDF-Inhalt auslesen und in Datenbank überführen

Don_2020

Lt. Commander
Registriert
Aug. 2019
Beiträge
1.468
Für verschiedene Projekte habe ich eine immer wiederkehrende Arbeit. Es isnd aus Datenblättern für Geräte von unterschiedlicher Hersteller in eine Datenbank zu übernehmen. Aufbau und Layout sind von Gerät und Hersteller unterschiedlich. Die Geräte werden nach Kundenwunsch individuell gefertigt. Das heißt für jedes Projekt muss dieser Schritt gemacht werden. Praktikanten sind nicht mehr verfügbar. Die Daten sollen gelesen und in eine Datenbank überführt werden. Dort stehen die Daten für weitere Bearbeitungsschritte zur Verfügung.
Datenübernahme soll über CSV erfolgen. Die Datenblätter liegen als PDF vor. Wie bekomme ich die Daten in die Datenbank z.B. Motorleistung 35 kW; Spannung 400 V; Stromaufnahme 20,3 A?

Vorschläge?
 
Was ist das für eine Datenbank? Wie wird die aktuell gefüttert? Gibt es schon eine Import-Funktion über CSV?
Wenn die Datenblätter alle unterschiedlich sind, wird ein Automatismus schwer.
 
Wie soll die Datenbank genutzt werden? Falls es nur um das Suchen von Infos geht, könnte man auch ein tool nehmen, welches PDFs durchsuchen kann oder ein DMS.

Ansonsten bleibt mMn nur eine Batchkonvertierung in Textfiles, die dann entsprechend geparst werden müssen und die Info dann in die Datenbank geschrieben werden. Allerdings sind die OCR-Konvertierungen nie perfekt.

Das müsste man aber wahrscheinlich selber programmieren, ein allgemeines Tool ist mir da nicht bekannt.
 
Hängt stark davon ab, wie die PDFs strukturiert sind. Haben sie alle die gleiche Struktur, ist es eher möglich, wenn auch keine Garantie.

Schau dir mal diesen Thread an. Du bist beileibe auch nicht der erste mit diesem Problem, Bibliotheken für diese Aufgabe existieren. Mit einer Suchmaschine und pdf extract csv findet sich Etliches.
 
Datenbank ist vorhanden (MS-Access). Bisher werden die Daten per Hand in die Datenbank eingetragen. Ein sehr zeitaufwendiges und fehlerhaftes Verfahren. Was mit den Daten später alles gemacht wird, tut hier nichts zur Sache (Leistungslisten, Stücklisten u.v.m). Die Datenbank ist nicht das Problem.

Die selektion der Daten aus der PDF ist das Problem.

@DeusoftheWired : Danke für den Link. pypdf und Tabula scheinen mir der richtige Ansatz zu sein.
 
  • Gefällt mir
Reaktionen: M4ttX
Ohne händischen Eingriff wird das schwierig, oder kannst du sicherstellen, dass die PDFs immer die gleiche Schreibweisen etc enthalten und auch nur eindeutige Ergebnisse enthalten sind? Wenn in einem Datenblatt mal 2 unterschiedliche Werte für irgendwas auftauchen, welcher soll dann genommen werden?

Selbst wenn du es automatisiert hinbekommst, würde ich nicht auf eine händische Validierung verzichten wollen.
 
  • Gefällt mir
Reaktionen: Incanus
Ja, pypdf ist hier der richtige Ansatz. Man muss nur gut darin sein, die Textwurst zu entzerren und die Daten herauszufischen.

Der Aufwand ist extrem davon abhängig, wie schön die Daten strukturiert sind. Ich mach sowas gerade für Daten von Webshops. Gerade die PDF-Produktdatenblätter hab ich mal außen vor gelassen.
 
Wenn die Datenbank nicht MS-Access, sondern MS-SQL Server wäre, könnte man die PDF-Dokumente in eine Filetable-Tabelle kopieren. Das kann. z.B. mit dem Windows Explorer gemacht werden.

Auf die Filetable legt man einen Volltext-Index. Die PDF-Dokumente können dann komfortabel nach Stichwörtern o. Textpassagen mittel SQL durchsucht werden.

MS-Access könnte als Frontend bestehen bleiben. Die entsprechenden SQL-Tabellen können verknüpft werden.
Hier entfällt der komplette Scanvorgang der PDF's.
 
Warum dieses Gefrickel mit Access-DB inkl. irgendwelchen Skripten? Man könnte doch auch gleich ein DMS wie zum Beispiel Agorum nutzen, das die PDFs mit Hilfe von OCR ausliest und per Workflow die extrahierten CSV-Daten den entsprechenden Projekten zuordnet. Von Agorum gibt es auch eine kostenlose Community-Edition, wobei ich aber dessen Funktionsumfang leider nicht kenne.

Edit:
OCR und Workflows gibt es wohl in der freien Version leider doch nicht:
https://www.agorum.com/agorum-core-open-und-pro-im-vergleich/
 
Zuletzt bearbeitet:
MS Access ist die DB für die nachfolgende Bearbeitung. Dort müsen die Daten rein.
Die DB kann ich nicht ändern. Ich weiss es gibt besseres. Ich mag MariaDB und Postgresql. Die sind deutlich performter als dieser MS-Access-Murks.
Ein DMS nützt mir nichts, da ich die Daten in die Anwendung bekommen muss. Der CSV-Export funktioniert.
Problem ist die Erstellung der CSV-Dateien. Der Inhalt soll ja automatisch aus den PDFs gelesen und in die CSV geschreiben werden.
OCR ist nicht das Problem. Das klappt ganz gut mit tesseract.
 
Zuletzt bearbeitet:
Genau die Vereinheitlichung von unstrukturierten Spezifikationen in ist das aufwendige Puzzlestück.

Das Endresultat ist nichts anderes als Produktspezifikationen, so strukturiert, wie bei Geizhals. Am Ende könnte man die Daten sogar zum filtern und sortieren basierend auf bestimmten Eigenschaften nutzen.
 
Zuletzt bearbeitet:
Don_2020 schrieb:
Problem ist die Erstellung der CSV-Dateien. Der Inhalt soll ja automatisch aus den PDFs gelesen und in die CSV geschreiben werden.
Für sowas verwendet man eigentlich BI-Tools wie Talend BI, Kmine etc. bzw. Jaspersoft.
 
Ja, aber das gibt es nicht von den Herstellern. Die Eintragungen in die DB muss jeder selber machen.

@nutrix: Wenn ich das richtig verstanden habe, kann man mit Jaspersoft reports aus Daten aus verscheidenen Datenbanken erstellen. Ich brauche das ganauso andersrum. Aus relative unsturkturierten Daten sollen Informationen ausgelesen und in eine CSV-Datei zur weiteren Verarbeitung generiert werden.
 
Don_2020 schrieb:
OCR ist nicht das Problem. Das klappt ganz gut mit tesseract.
Vielleicht verstehe ich da grad was nicht richtig, aber wenn Du die OCR mit Tesseract machst, dann hast Du doch schon den jeweiligen Text vorliegen.
Dann brauchst Du nur noch die Texte bspw. anhand Stichwörtern parsen und kannst das dann in die DB pflegen?

So ähnlich habe ich das mal mit Tesseract gemacht, als ich hunderte alte Zertifikate digitalisieren sollte. Damals habe ich vbscript gearbeitet, heutzutage nimmt man natürlich andere tools.
 
Don_2020 schrieb:
@nutrix: Wenn ich das richtig verstanden habe, kann man mit Jaspersoft reports aus Daten aus verscheidenen Datenbanken erstellen. Ich brauche das ganauso andersrum. Aus relative unsturkturierten Daten sollen Informationen ausgelesen und in eine CSV-Datei zur weiteren Verarbeitung generiert werden.
Ja, sorry, hätte ich erwähnen sollen. Wie gesagt, wir haben für viele Projekte genau diese Kombination gewählt. Und für das Verarbeiten PDF Dateien , um sie dann direkt in Datenbanken zu mappen (CVS kannst Du Dir dann sparen), kannst Du Talend Open Studio verwenden. Oder Du baust damit einen allgemeine CVS-Generator, der Dir bestimmte Schlüsselworte aus den PDFs ausliest und in eine gleiche CSV Form bring.

In Talend modellierst Du Deinen Prozess, es springt dann eine Java-Komponente raus, die Du auf jeder Maschine mit Java dann laufen lassen kannst, und Du per Aufgabensteuerung etc. automatisiert dann dieses Auslesen machst.
 
Don_2020 schrieb:
Ein sehr zeitaufwendiges und fehlerhaftes Verfahren.
…weil einfach alle Welt überall ihr Süppchen kocht und keine eigenen Datenexzerpte (›CSV‹) mit bestimmten Strukturen (etwa Schlüsselbegriffen) anlegt. Copy-Paste wird schon zum Horrortrip…

So lange keine KI und dieses Denken abnimmt bleibt nur die Schnittstelle Mensch Daten zu erfassen…

CN8
 
Das ist doch auch kein Hexenwerk mehr, Schlüsselbegriffe in eine Tabelle rein und fertig. Problem ist eher die Formatierung, wenn der Schlüsselwert + Zahl dann nicht hintereinander folgt, sondern Umbrüche und sonstige Schmutzzeichen folgen, oder gar die Werte über mehrere Zeilen untereinander verteilt sind, was für uns sichtbar zwar schick aussieht, aber als reine Texte vollkommen wirr dann im Text verteilt sind.

Nur mal so als Tipp, diverse Hersteller bieten ihre Produkte sehr wohl fertige Datenbank-Exports als CSV oder sogar als DDLs an, die man importieren kann. Ich hab einige Zeit als Dienstleister für diverse Automotiv Zulieferer gearbeitet, daher weiß ich das, weil ich genau den Job machten mußte. Wenn Ihr hier den gleichen Stamm an Herstellern habt, einfach mal dort in den IT Abteilungen bzw. Vertrieb anfragen. Und nicht bei gleich der ersten Absage aus dem Vertrieb (die wissen das dann nicht besser) aufgeben, hier direkt mal mit der IT sprechen.

Was mich noch mehr erstaunt, daß Ihr mit PDF rummachen müßt. Gerade im Handel und Automotive-Bereich wird schon seit Ende der 80er alles elektronisch ausgetauscht (EDIFACT, VDA, ODETTE, Ansi X.12...), heute macht man das moderner mit SOAP und REST oder XML Derivaten. Gerade Daten über Produkte bzw. Datenblätter können eigentlich schon lange direkt über solche Formate in die eigenen Datenbanken übernommen werden. Welche Branche ist das extakt, wo Du da arbeitest? Habe die da etwa einen Trend zum direkten Datenaustausch verpaßt?

Das letzte mir bekannte Projekt war mit der Motorherstellung von Siemens für alle Arten von großen Motoren und Wechselgeneratoren für Kraftwerke, Schiffe etc. Das wurde beispielsweise sogar direkt per SAP BI zwischen Herstellern und Lieferanten wie Kunden übertragen. Da tippert schon lange keiner mehr hier irgendwelche PDF Datenblätter mehr ab.
 
Zuletzt bearbeitet:
nutrix schrieb:
Das ist doch auch kein Hexenwerk mehr, Schlüsselbegriffe in eine Tabelle rein und fertig
Nee!
Das ist nix mit rein und fertig da diese Schlüsselworte und Werte dazu auf mögliche und unmögliche Weise sortiert sein können! Ich habe da wirklich viel erlebt, viel. Viel Durcheinander und keine Stringenz.
Wenns so simpel wäre hätte der TE nicht fragen müssen…

So ein Tabelle muss man pflegen, pflegen, pflegen mit X Details die dann auch OCR überleben müssen und die sich mit Glück immer wieder ändern - und sich natürlich widersprechen… €1500, €1.500,00 1500.00€…

CN8
 
cumulonimbus8 schrieb:
Das ist nix mit rein und fertig da diese Schlüsselworte und Werte dazu auf mögliche und unmögliche Weise sortiert sein können! Ich habe da wirklich viel erlebt, viel. Viel Durcheinander und keine Stringenz.
Das brauchst Du mir nicht zu erzählen, ich mach das ja schon viele Jahre. Ich hab doch nicht gesagt, daß es einfach wäre. Aber es ist machbar, und dafür gibt es doch IT, um genau solche Probleme anzugehen. 🤗 Und dafür gibts so Leute wie uns, die das irgendwie lösen, und dafür werden wir meistens auch gut bezahlt.
 
  • Gefällt mir
Reaktionen: wuselsurfer
nutrix schrieb:
und dafür gibt es doch IT, um genau solche Probleme anzugehen
Buh! Pfui! Antreiber! Das muss man der Gewerkschaft melden! 😁

Mein zweiter Vorname ist Faulheit. Ich programmiere und besorge mir Vereinfachungen wo es geht und wo es was bringt - aber beim Auslesen kruder, widersprüchlicher , verquirlter Quellen - da habe ich schon lange die Grätsche gemacht 😉

CN8
 
  • Gefällt mir
Reaktionen: dms
Zurück
Oben