Wichtigste Erkenntnisse
- Bewahren Sie den ursprünglichen Upload auf und erfassen Sie vor der Verarbeitung seine Prüfsumme, seinen MIME-Typ, seinen Dateinamen und seinen Quellkontext.
- Leiten Sie PDFs an /document/ocr weiter. Ziehen Sie /image/ocr für kurze Texte in Bildern in Betracht und konvertieren Sie unterstützte Eingaben aus Büroanwendungen vor der Dokumenten-OCR in PDF.
- Behandeln Sie OCR-Ausgaben als abgeleitete Daten, die eine Validierung durch die Anwendung, Prüfregeln und einen Verweis auf das Quelldokument oder Quellbild benötigen.
Die Dokumentenannahme ist zunächst eine Frage der Weiterleitung und erst danach eine OCR-Aufgabe. Eine zuverlässige Pipeline identifiziert zuerst, was eingegangen ist, bewahrt das Original auf, konvertiert nur bei Bedarf, extrahiert Text mit dem passenden Robot und erfasst genügend Herkunftsinformationen, um später jedes durchsuchbare Ergebnis erklären zu können.
Worauf es besonders ankommt
- Trennen Sie den Abschluss der Assembly von der Veröffentlichung im Suchindex und überprüfen Sie die erforderlichen exportierten Dateien, bevor Sie die nachgelagerte Indexierung starten.
- Verwenden Sie idempotente Kennungen und versionierte Ausgabepfade, wenn dieselbe Quelle erneut hochgeladen oder später korrigiert werden kann.
Mit einem Eingabevertrag beginnen
Eine Dokumentenpipeline wird schwierig zu handhaben, wenn der erste Schritt alles akzeptiert und der letzte Schritt davon ausgeht, dass alles verstanden wurde. Definieren Sie den Eingabevertrag, bevor Sie Robots auswählen: welche Quellen zulässig sind, was die Anwendung als Dokument bezeichnet, welche Metadaten erforderlich sind, wie groß ein Upload sein darf und welche Ausgaben nachgelagerte Systeme erwarten. Setzen Sie in der Anwendung eine Obergrenze für die Seitenzahl durch, bevor Sie die Assembly erstellen; das folgende Beispiel begrenzt die Seitenzahl nicht. Große oder seitenreiche PDFs können das feste Polling-Zeitfenster des Robots überschreiten, während dieser auf einen asynchronen Auftrag beim Anbieter wartet, selbst wenn der Auftrag später abgeschlossen wird. Ein erneuter Versuch mit unveränderter Eingabe verlängert dieses Zeitfenster nicht; behandeln Sie wiederholte Zeitüberschreitungen als Fehler. Verkleinern Sie vor einem weiteren Versuch die Eingabe oder teilen Sie sie auf.
Bewahren Sie das hochgeladene Original als unveränderliche Referenz auf. Ein normalisiertes PDF, eine OCR-Textdatei und ein Suchdatensatz sind Derivate mit unterschiedlichen Lebensdauern und Fehlerbildern. Weisen Sie ihnen eine gemeinsame Identität in der Anwendung zu, damit eine prüfende Person von einem Suchtreffer zu den Quellbytes gelangen kann, aus denen er entstanden ist. Für die seitenspezifische Navigation ist eine separate Seitenzuordnung erforderlich.
Quelle identifizieren
Erfassen Sie eine stabile Dokument-ID, die Prüfsumme, den Mandanten, die hochladende Person, den Dateinamen, den MIME-Typ und den Eingangszeitpunkt.
Ausgaben benennen
Legen Sie fest, ob der Workflow ein normalisiertes PDF, OCR-Text, strukturierte Metadaten, Thumbnails oder alle diese Ausgaben zurückgibt.
Zustände trennen
Verfolgen Sie die Zustände hochgeladen, normalisiert, extrahiert, geprüft, indexiert und fehlgeschlagen unabhängig voneinander.
Jede Eingabe an den passenden Robot weiterleiten
Eine Dateierweiterung verrät nicht, ob ein PDF auswählbaren Text oder nur gescannte Pixel enthält. Verwenden Sie den von Transloadit ermittelten Wert ${file.mime} und die Richtlinie der Anwendung, um Eingaben weiterzuleiten. Die MIME-Ermittlung kombiniert eingebettete Metadaten, Informationen aus der Dateierweiterung und eine Inhaltserkennung; die Dateierweiterung kann ausschlaggebend sein, wenn eingebettete Metadaten fehlen. Diese Eingangskontrolle ist kein Nachweis für den Dateiinhalt. Wenn Ihr Eingabevertrag eine strenge Inhaltsvalidierung verlangt, validieren Sie die gespeicherten Bytes in Ihrer Anwendung. /file/filter kann Dateien mit Bedingungen für accepts oder declines anhand von ${file.mime} weiterleiten; verwenden Sie error_on_decline, wenn eine nicht unterstützte Eingabe zum Fehlschlagen der Assembly führen soll.
PDFs können direkt an /document/ocr übergeben werden. Verwenden Sie /image/ocr für kurze Texte in Fotos und Screenshots; die Dokumentation weist darauf hin, dass die Erkennung bei dicht beschriebenen Dokumentbildern weniger genau sein kann. Verwenden Sie für Office-Eingaben wie DOCX /document/convert, um sie in PDF zu konvertieren, und prüfen Sie zuerst die dokumentierten Eingabeformate. Dieser Workflow nutzt die PDF-Ausgabe; andere Ausgabeformate sind verfügbar, PDF als Eingabe wird jedoch nicht unterstützt. Ein Robot kann Eingaben, die er nicht akzeptiert, überspringen, ohne dass die Assembly fehlschlägt. Ergänzen Sie daher eine explizite MIME-Eingangskontrolle und überprüfen Sie die erforderlichen Ausgaben.
PDF-Zweig
Führen Sie /document/ocr für PDFs aus, auch für gescannte PDFs ohne nutzbare Textebene; wählen Sie json oder text, um ein separates Artefakt auszugeben. Das Format meta speichert die Erkennungsdaten stattdessen als ${file.meta.recognized_text}, ohne eine OCR-Datei zu erstellen. Verwenden Sie die Granularität list für Zeichenfolgen; die Standardgranularität full speichert Text- und Polygonobjekte.
Bildzweig
Führen Sie /image/ocr für kurze Texte in Bildern aus. Bei der Eingabevorbereitung wird das Bild erneut als PNG codiert, wenn es an einer Bildkante mehr als 2000 Pixel misst, nicht im Format JPEG/PNG vorliegt oder Ausrichtungsmetadaten enthält; dabei wird es in diese Größenbegrenzung eingepasst und bei Bedarf automatisch gedreht. Testen Sie dicht beschriebene Scans sorgfältig; die Vorbereitung durch Konvertierung von Bildern in PDF liegt außerhalb dieses Leitfadens.
Normalisierungszweig
Konvertieren Sie unterstützte Office- oder Quellformate vor der OCR, wenn der ursprüngliche Dateityp vom OCR-Robot nicht akzeptiert wird.
Herkunftsnachweise bei abgeleiteten Ausgaben bewahren
Text ohne Herkunftsnachweis ist schwer vertrauenswürdig einzuordnen. Speichern Sie die Quelldokument-ID, die Ausgabeversion und den Extraktionszeitpunkt zusammen mit dem extrahierten Text. Das folgende AWS-Beispiel gibt JSON auf Dokumentebene ohne Seitenzuordnung zurück. Für seitenspezifische Suchtreffer muss die Anwendung PDFs vor dem Upload aufteilen und die ursprünglichen Seitenzahlen erfassen; diese Vorbereitung liegt außerhalb des Leitfadens. Das Beispiel erlaubt eine Eingabe pro Assembly und verwendet feste Objektnamen. Eine Seitenpipeline benötigt eine Assembly pro Seite mit seitenspezifischen Objektschlüsseln und einer Zuordnung zum übergeordneten Dokument. Werden dieselben Werte für document_id und output_version für mehrere Seiten wiederverwendet, werden deren Objekte überschrieben. Leiten Sie die Zuordnung niemals aus der Reihenfolge im OCR-Array ab. Wenn die Quelle ersetzt wird, erstellen Sie eine neue Version und lassen Sie den Indexer den alten Datensatz erst außer Betrieb nehmen, nachdem die neue Ausgabe überprüft wurde.
Halten Sie OCR-Text und normalisiertes Dokument getrennt. Eine prüfende Person muss möglicherweise den Originalscan, die konvertierte PDF-Datei und den extrahierten Text direkt miteinander vergleichen. Dieser Zusammenhang ist auch dann nützlich, wenn ein anderer OCR-Anbieter ein besseres Ergebnis liefert.
Stabile Identität verwenden
Die Quell-ID sollte bei Wiederholungsversuchen erhalten bleiben, während jede abgeleitete Ausgabe eine Version erhält.
Kein Seitenkontext in der Ausgabe
Bewahren Sie für jedes Ergebnis Verweise auf die Quelle auf. Die AWS-Ausgabe enthält keine Seitenzahlen; die Seitennavigation benötigt die Zuordnung, die beim Erstellen der Eingaben mit jeweils genau einer Seite erfasst wurde.
Korrekturen nicht überschreiben
Ein korrigierter Upload sollte eine neue Version und ein explizites Ersetzungsereignis erzeugen.
Prüfung und Indexierung explizit festlegen
Der durch Polling oder Benachrichtigungen im Assembly Status erfasste Wert ASSEMBLY_COMPLETED für ok bedeutet, dass kein nicht ignorierter Fehler die Assembly gestoppt hat und ihre deklarierten Aufgaben einschließlich der Speicheraufgaben abgeschlossen sind. Ein Step kann eine Eingabe überspringen, und ignore_errors kann das Fehlschlagen eines Steps unterdrücken. Der Abschluss allein beweist daher nicht, dass die erforderlichen Artefakte vorhanden sind. Er bedeutet auch nicht, dass der Suchindex Ihrer Anwendung den Text angenommen oder ein Mensch einen sensiblen Datensatz freigegeben hat. Veröffentlichen Sie ein nachgelagertes Ereignis erst, wenn die von Ihnen benötigten Ausgaben vorhanden sind und ihre Prüfungen bestanden haben.
/document/ocr stellt keine Konfidenz-Scores bereit, daher kann dieses Template die Weiterleitung nicht anhand eines Konfidenzschwellenwerts des Anbieters steuern. Nutzen Sie automatisierte Prüfungen in der Anwendung, um bei fehlenden Ausgabedateien, leerem extrahiertem Text, unplausibel wenig Text im Verhältnis zur gemeldeten Seitenzahl, fehlenden erwarteten Formulierungen oder einer Dokumentklasse mit hoher Tragweite eine Prüfung durch Menschen auszulösen. Bei gewöhnlichen Dokumenten kann ein automatisierter Verarbeitungspfad dennoch die Prüfungen protokollieren und eine Möglichkeit zur erneuten Verarbeitung der Quelle offenhalten.
Ausgaben überprüfen
Prüfen Sie vor der Indexierung die erwarteten Dateien, Seitenzahlen, nicht leeren Text und Metadaten.
Ausnahmen prüfen
Verwenden Sie für mehrdeutige oder folgenreiche Ergebnisse eine Warteschlange zur menschlichen Prüfung, statt sie stillschweigend zu veröffentlichen.
Idempotent indexieren
Verwenden Sie die Quell-ID und die Ausgabeversion als Indexschlüssel, damit Wiederholungsversuche keine doppelten Datensätze erzeugen.
Korrekturen versionieren, ohne Nachweise zu verlieren
OCR-Korrekturen und das Ersetzen der Quelle sollten eine neue Version des Derivats erzeugen. Bewahren Sie die vorherige Quelle, Ausgabe und Prüfentscheidung gemäß Ihrer Aufbewahrungsrichtlinie lange genug auf, damit ein Indexergebnis nach einer Korrektur nachvollziehbar bleibt.
Verwenden Sie die Dokument-ID und die Ausgabeversion als Indexierungsschlüssel. Verwenden Sie eine Version nur dann erneut, wenn Sie denselben Verarbeitungsversuch wiederholen; vergeben Sie für Korrekturen, Anbieterwechsel oder eine bewusste erneute Verarbeitung eine neue Version. Führen Sie Schreibvorgänge für eine Version nacheinander aus, damit gleichzeitige Wiederholungsversuche kein neueres akzeptiertes Ergebnis überschreiben können.
Quelle aufbewahren
Halten Sie die Originalbytes zur Begutachtung sowie für künftige Änderungen an den OCR-Einstellungen oder einen künftigen Anbieterwechsel verfügbar.
Atomar ersetzen
Veröffentlichen Sie die neue Indexversion erst, nachdem die erforderlichen Dateien und der Prüfstatus überprüft wurden.
Mit einem begrenzten PDF-Template beginnen
Das folgende Beispiel implementiert nur die PDF-Verzweigung: Es erlaubt höchstens einen Upload, lehnt Nicht-PDF-MIME-Typen ab, fordert AWS-OCR-JSON an und exportiert Quelle und JSON unter separaten festen Schlüsseln innerhalb einer einzigen anwendungsgesteuerten Dokumentversion. Speichern Sie dieses JSON als gespeicherten Template-Inhalt, nicht als vollständige Parameter einer Assembly-Anfrage. Der Auth Key und die Signatur werden beim Erstellen der Assembly von Ihrem Server bereitgestellt. Testen Sie repräsentative PDFs auf Ausgabestruktur, nutzbaren Text und Fehlerverhalten, bevor Sie die Beispielkonfiguration erweitern. auth.max_size begrenzt die insgesamt erwarteten Upload-Bytes einschließlich Anfrage-Overhead: 104857600 Bytes entsprechen 100 MiB und sind kein Kontingent pro Datei. Dies garantiert weder eine Ablehnung, bevor bei einem fortsetzbaren Upload Bytes übertragen werden, noch den Abschluss der OCR.
Erstellen Sie ein Transloadit-Konto und speichern Sie die Assembly Instructions als Template. Legen Sie für S3 einen Eintrag mit Template-Zugangsdaten namens document-output mit key, secret, bucket und bucket_region an; die Einrichtung ist unter Template-Zugangsdaten beschrieben. Für diese Beispielkonfiguration muss der Server die gesamte Assembly-Anfrage einschließlich des Uploads zusammenstellen und senden, statt signierte Parameter an einen Browser zu übergeben. Er muss in den Feldern der Anfrage nicht leere, autorisierte und pfadsichere Werte für document_id und output_version bereitstellen und validieren. Diese werden in den Speicherpfaden zu den Variablen ${fields.document_id} und ${fields.output_version}. Multipart-Felder tragen ebenfalls zu den Assembly-Feldern bei und sind nicht durch die Signatur der Parameter abgedeckt; daher autorisiert das Signieren allein kein Speicherpräfix. Leiten Sie keine vom Client übermittelten Felder weiter. Prüfen Sie vor der Indexierung, ob die zurückgegebenen Speicherschlüssel dem vom Server erwarteten Präfix entsprechen. Speichern Sie allow_steps_override: false im gespeicherten Template, um bei Verwendung von template_id Überschreibungen von Steps zur Laufzeit zu verhindern. Halten Sie den Bucket mit aktiviertem Block Public Access privat und prüfen Sie die Leseberechtigung; acl: bucket-default lässt eine Objekt-ACL weg und stützt sich auf die Zugriffsrichtlinie des Buckets.
Dieses Beispiel legt provider: aws fest, um die Anbieterauswahl explizit zu machen, nicht um identische Antworten zu garantieren. Die Voreinstellung ist auto. Nutzen Sie die aktuellen Limits von AWS Textract als maßgebliche Referenz für die Sprachunterstützung von AWS. Prüfen Sie die Unterstützung durch den Anbieter, bevor Sie AWS oder GCP auswählen; ihre JSON-Strukturen unterscheiden sich. Testen Sie Ihre Dokumentsprachen und Layouts mit dem gewählten Anbieter und rechnen Sie damit, dass sich die Antworten mit der Weiterentwicklung der Anbietermodelle ändern.
Das Beispiel verwendet format: "json" mit granularity: "list", um für die Indexierung und Prüfungen der Textmenge ein Array erkannter Zeilen als Zeichenfolgen zu exportieren. Das vermeidet die Mischung aus Seiten-, Zeilen- und Worteinträgen des Standardartefakts mit der Granularität full, bei der Text wiederholt auftreten kann. format: "text" exportiert dagegen Klartext und erzwingt die Granularität list. Keine der beiden Ausgaben enthält Seitenzuordnungen oder Konfidenz-Scores. Wenn Sie die Granularität full wählen, verwenden die optionalen Polygonpunkte einen Breitenwert und einen Höhenwert aus den PDF-Metadaten und werden zu Nullen, wenn diese Abmessungen fehlen. Validieren Sie die Punkte vor der Verwendung für Overlays und leiten Sie die Seitenidentität niemals aus Polygonen oder der Array-Reihenfolge ab.
Auch eine erfolgreiche OCR-Verarbeitung kann Text übersehen oder falsch erkennen. Prüfen Sie die beiden exportierten Objekte und die Menge des extrahierten Textes im Verhältnis zur gemeldeten Seitenzahl und leiten Sie verdächtige Ergebnisse zur Prüfung durch Menschen weiter. Diese automatisierten Prüfungen zeigen Probleme auf, belegen aber weder Vollständigkeit noch Genauigkeit der Erkennung; vergleichen Sie die Ergebnisse vor der Veröffentlichung mit bekanntem Text in repräsentativen Quelldokumenten.
Die festen Objektschlüssel source.pdf und ocr.json sorgen dafür, dass erneute Versuche für eine Dokumentversion dieselben Speicherorte ansteuern. Sie deduplizieren keine Assemblies und machen OCR nicht deterministisch; die Anwendung muss erneute Versuche serialisieren und die Zuordnung zum akzeptierten Ergebnis beibehalten. Vergleichen Sie die Gebühren der Anbieter anhand der Preise von Transloadit und berücksichtigen Sie dabei das Seitenvolumen und weitere Verarbeitung im Workflow. Die anbieterspezifische OCR-Seitengebühr wird anhand des für die Eingabe gemeldeten Werts page_count berechnet; vergleichen Sie aktuelle Gebühren, bevor Sie die Kosten des gesamten Workflows schätzen.
{
"allow_steps_override": false,
"auth": {
"max_number_of_files": 1,
"max_size": 104857600
},
"steps": {
":original": {
"robot": "/upload/handle"
},
"pdf_only": {
"use": ":original",
"robot": "/file/filter",
"accepts": [["${file.mime}", "==", "application/pdf"]],
"error_on_decline": true,
"error_msg": "Upload a PDF document"
},
"extracted_text": {
"use": "pdf_only",
"robot": "/document/ocr",
"provider": "aws",
"format": "json",
"granularity": "list",
"result": true
},
"stored_source": {
"use": "pdf_only",
"robot": "/s3/store",
"credentials": "document-output",
"path": "documents/${fields.document_id}/${fields.output_version}/source.pdf",
"acl": "bucket-default",
"result": true
},
"stored_text": {
"use": "extracted_text",
"robot": "/s3/store",
"credentials": "document-output",
"path": "documents/${fields.document_id}/${fields.output_version}/ocr.json",
"acl": "bucket-default",
"result": true
}
}
}Repräsentative Eingaben testen
Prüfen Sie vor der Indexierung beide exportierten Objekte und vergewissern Sie sich, dass der extrahierte Text nicht leer und die Zeichenmenge für die gemeldete Seitenzahl plausibel ist. Testen Sie die Ablehnung von Nicht-PDF-Dateien und die Behandlung erneuter Versuche.
Verzweigungen gezielt ergänzen
Erweitern Sie die PDF-Beispielkonfiguration erst dann um Verzweigungen für Konvertierung und Bild-OCR, wenn deren Eingabeverträge explizit festgelegt sind.
Wissenswerte technische Details
- /document/ocr nimmt PDFs als Eingabe an. /document/convert kann PDFs aus den dokumentierten Office-Formaten erzeugen, aber keine PDFs als Eingabe annehmen.
- Bei format: json oder format: text gibt /document/ocr ein separates Artefakt zurück. format: meta erzeugt kein OCR-Artefakt und speichert die Erkennungsdaten als ${file.meta.recognized_text}; die Struktur dieser Daten hängt von der Granularität ab. Keines der Formate fügt dem Quell-PDF eine durchsuchbare Textebene hinzu.
- Bei AWS enthält das von /document/ocr erzeugte Artefakt mit der Granularität
fullzugeordneten Text und optionale Begrenzungspolygone; Seitenzahlen, Blocktypen und Konfidenz-Scores des Anbieters werden weggelassen. Es mischt Seiten-, Zeilen- und Worteinträge, sodass Text wiederholt auftreten kann; die Granularitätlistliefert stattdessen Zeilen als Zeichenfolgen. - Ein Robot kann eine Eingabe überspringen, die er nicht annimmt. Eine Assembly wird erst erfolgreich abgeschlossen, wenn die deklarierten Aufgaben einschließlich der Speicheraufgaben beendet sind. Übersprungene Eingaben und ignorierte Fehler erfordern dennoch eine Überprüfung der Ausgaben.
- /image/ocr codiert das Bild erneut als PNG und passt es auf höchstens 2000 Pixel pro Bildkante ein, wenn es weder JPEG noch PNG ist, diese Abmessung überschreitet oder Metadaten zur Ausrichtung enthält. Bei textdichten Dokumentbildern kann die Erkennung ungenauer sein als bei kurzen Texten auf Fotos.
- auth.max_size begrenzt die insgesamt erwarteten Upload-Bytes der Assembly einschließlich Anfrage-Overhead, nicht die Bytes jeder einzelnen Datei; dies garantiert keine Ablehnung vor Beginn einer fortsetzbaren Übertragung.
- Die anbieterspezifischen Gebühren für Dokumenten-OCR werden anhand des für die Eingabe gemeldeten Werts
page_countberechnet. Berücksichtigen Sie die erwartete Seitenzahl, wenn Sie Anbieter vergleichen und die Kosten des Workflows schätzen.
Ein praxisnaher Ansatz
- 1
Speichern Sie das PDF-Template und lassen Sie dann Ihren Server die vollständige Assembly-Anfrage mit den autorisierten Feldern document_id und output_version erstellen und senden.
- 2
Weisen Sie mit dem Filter des Beispiels andere MIME-Typen als PDF zurück; setzen Sie etwaige Seitenzahllimits vor dem Absenden in der Anwendung durch.
- 3
Speichern Sie den OCR-Text oder das JSON-Artefakt zusammen mit der Quelle unter einer gemeinsamen Dokumentversion und bewahren Sie die jeweiligen Objektschlüssel in der Anwendung auf.
- 4
Leiten Sie Ergebnisse mit leerem Text, fehlenden erwarteten Formulierungen oder mehrdeutiger Struktur zur menschlichen Prüfung weiter, bevor Sie sie durchsuchbar machen.
Wann Transloadit hilfreich ist
Das bereitgestellte Template deckt die Annahme serverseitig eingereichter PDFs, OCR und Speicherung ab. Der Leitfaden beschreibt auch Verzweigungen für Konvertierungen und Bilder, stellt die entsprechenden Templates jedoch nicht bereit; ergänzen Sie diese erst, nachdem Sie ihre Eingabeverträge getestet haben.
Architekturgrenze
Transloadit kann hochgeladene Dateien normalisieren, Text aus unterstützten Eingaben extrahieren und die daraus entstehenden Artefakte exportieren. Transloadit bietet weder ein Dokumentenmanagementsystem noch einen Suchindex, eine Warteschlange für die menschliche Prüfung oder eine rechtliche Garantie für die Genauigkeit der OCR.
Häufig gestellte Fragen
Kann OCR jedes PDF durchsuchbar machen?
Nein. /document/ocr extrahiert separaten Text; eine Textebene wird dem Quell-PDF dabei nicht hinzugefügt. Die Erkennungsqualität hängt von der Scanqualität, der Sprache, dem Layout und dem Dokument selbst ab. Bewahren Sie das Original auf und prüfen Sie die Ergebnisse, wenn ein Fehler relevant wäre.
Sollte ich jedes Dokument zuerst in PDF konvertieren?
Nein. Konvertieren Sie nur Formate, die für den nächsten Robot normalisiert werden müssen. Unnötige Konvertierungen verursachen zusätzlichen Aufwand und können quellenspezifische Strukturen verwerfen.
Wo sollte der Suchindex liegen?
In der Anwendung oder im Suchdienst, die beziehungsweise der für das Auffinden zuständig ist. Transloadit kann die Quelldaten und die daraus abgeleiteten Daten vorbereiten und exportieren, ist aber weder der Dokumentenkatalog noch der Suchindex.
Wie vermeide ich doppelte Dokumente nach einem erneuten Versuch?
Geben Sie der Quelle eine stabile Anwendungs-ID und jedem abgeleiteten Ergebnis eine Version. Gestalten Sie den Indexierungsvorgang so, dass er diese Version idempotent ersetzt.