- Ein leistungsstarkes Image-to-Markdown-OCR-Modell, das über reine Zeichenerkennung hinaus das gesamte Dokument in eine Markdown-Struktur umwandelt
- Formeln werden in LaTeX-Form konvertiert, Bilder erhalten automatische Beschreibungen, und Tabellen werden als HTML-/Markdown-Tabellen ausgegeben, wodurch für den Einsatz mit LLMs optimierte Ausgaben entstehen
- Erkennt Unterschriften, Wasserzeichen, Checkboxen usw. und wandelt sie in Formen wie
<signature>, <watermark>, ☐/☑ um; damit besitzt es eine hervorragende Fähigkeit zur Verarbeitung einzelner Dokumentbestandteile
- Lässt sich einfach über die Transformers von Hugging Face oder einen vLLM-Server nutzen und kann über die Bibliothek
docext auch als Web-App verwendet werden
- Bietet bei verschiedensten Dokumenttypen und komplexen Layouts eine sehr hohe Genauigkeit und einen hohen Grad an Strukturierung, wodurch es für Verträge, Formulare, Berichte usw. sehr nützlich ist
Projektüberblick und Bedeutung
- Nanonets-OCR-s ist ein innovatives Modell, das über herkömmliche OCR (optische Zeichenerkennung) hinausgeht, Bedeutung und Struktur eines Dokuments analysiert und das Ergebnis im Markdown-Format ausgibt
- Es unterscheidet Formeln, Bilder, Tabellen, Checkboxen, Unterschriften und Wasserzeichen voneinander und wandelt sie in sinnvolle Tags und Darstellungsformen (LaTeX, HTML, Markdown usw.) um, sodass sie sich für Downstream-Aufgaben oder LLM-basierte Dokumentverarbeitung eignen
- Im Vergleich zu bestehenden Open-Source-OCR-Projekten zeigt es bei komplexen Dokumentstrukturen und der Extraktion verschiedenster semantischer Elemente eine höhere Leistung und Potenzial für automatisierte Workflows
- Es handelt sich um eine feinabgestimmte Version des Modells Qwen2.5-VL-3B-Instruct, die verschiedene Dokumentbestandteile identifiziert und mit aussagekräftigem Markup versieht
Zentrale Merkmale
- Erkennung von LaTeX-Formeln
- Formeln und mathematische Ausdrücke in Dokumenten werden je nach Typ inline(
$...$) oder display($$...$$) automatisch in LaTeX-Syntax umgewandelt und ausgegeben
- Intelligente Bildbeschreibung
- Für jedes Bild werden innerhalb des Tags
<img> Art, Stil und Inhalt des Bildes detailliert beschrieben
- Auch Logos, Diagramme, Grafiken usw. werden zusammen mit Kontext und Bedeutung beschrieben und so in für LLMs geeignete Eingaben umgewandelt
- Erkennung und Trennung von Unterschriften
- Unterschriftsbilder werden vom Text getrennt und in einem eigenen
<signature>-Tag verarbeitet
- Das hat einen hohen Nutzwert für die automatisierte Verarbeitung von Rechts- und Geschäftsdokumenten
- Extraktion von Wasserzeichen
- In Dokumente eingefügte Wasserzeichen-Texte werden erkannt und separat im Tag
<watermark> erfasst
- Umwandlung von Checkboxen und Radio-Buttons
- Ausgabe als standardisierte Unicode-Symbole wie * ☐ (nicht markiert), ☑ (markiert), ☒ (abgelehnt)
- Verbessert die Zuverlässigkeit bei der Verarbeitung formularartiger Dokumente wie Umfragen und Anträgen
- Extraktion komplexer Tabellenstrukturen
- Auch komplexe Tabellen werden in Markdown- und HTML-Tabellen umgewandelt und sind dadurch vielseitig nutzbar
Wichtige Nutzungsarten
Python-Codebeispiel
- Das Modell kann mithilfe der
transformers-Bibliothek von Hugging Face einfach geladen und ausgeführt werden
- Gibt man ein Bild als Eingabe, liefert es das Ergebnis als strukturiertes Markdown mit Text, Tabellen, Formeln, Bildbeschreibungen, Wasserzeichen usw.
- Seitenzahlen oder Wasserzeichen werden mit
, usw. getrennt umschlossen
- Checkboxen werden als Unicode-Symbole (☐, ☑) ausgegeben
Nutzung auf Basis von vLLM
- Das Modell kann auf einem vLLM-Server registriert und einfach über eine OpenAI-kompatible API angesprochen und genutzt werden
- Bei Bildeingaben werden Ergebnisse für Text, Tabellen, Formeln, Wasserzeichen usw. in einem konsistenten Format ausgegeben
Nutzung des docext-Pakets
- Über ein separates Paket namens
docext lässt sich Nanonets-OCR-s mit der bloßen Ausführung zusätzlicher Befehle direkt für die Dokumentstrukturierung einsetzen
- Siehe GitHub-Dokumentation
2 Kommentare
Hacker-News-Kommentare
Ich arbeite bei Nanonets und freue mich sehr, Nanonets-OCR-s zu veröffentlichen, ein VLM-Modell mit 3B Parametern.
Es ist ein leichtgewichtiges Modell, das für die Umwandlung von Dokumenten in sauberes, strukturiertes Markdown optimiert ist.
Das liegt daran, dass es die Struktur und den Kontext von Dokumenten gelernt hat, darunter Tabellen, Formeln, Bilder, Diagramme, Wasserzeichen, Checkboxen usw.
Zu den wichtigsten Funktionen gehören die Erkennung von LaTeX-Formeln (mit korrekter Unterscheidung zwischen Inline- und Block-Formeln), integrierte Bildbeschreibungen (über
img-Tags, mit Unterstützung für Diagramme, Logos, Schaubilder usw.), Erkennung und Trennung von Unterschriften (Ausgabe innerhalb einessignature-Blocks), Extraktion von Wasserzeichen (gespeichert mitwatermark-Tags), intelligente Verarbeitung von Checkboxen/Radio-Buttons (höhere Zuverlässigkeit im Post-Processing durch Unicode-Konvertierung) sowie die Extraktion komplexer Tabellenstrukturen (auch Tabellen mit mehreren Zeilen/Spalten werden gut als Markdown und HTML ausgegeben).Wer es selbst ausprobieren möchte, kann bei Huggingface oder Docext Colab nachsehen.
Der korrekte Link für Docext ist README.md.
Mich würde interessieren, ob bei dem verwendeten LLM Halluzinationen auftreten.
Mich würde interessieren, ob sich die Bilder selbst extrahieren lassen oder ob dafür weiterhin ein separater Extraktionsschritt nötig ist.
Mich würde interessieren, ob man das zum Parsen von Restaurantmenü-Fotos oder PDFs in ein JSON-Schema verwenden kann, vielleicht zusammen mit einem LLM für das Post-Processing, oder ob sich dafür ein großes multimodales LLM besser eignet.
Ich habe verschiedene LLMs ausprobiert, um ein Shipibo-Spanisch-Wörterbuch, also eine indigene Sprache aus Peru, in ein englisches Wörterbuch zu übersetzen, aber wegen der zwei Spalten, seltsamer Zeilenumbrüche und einer Mischung aus Shipibo und Spanisch in den Definitionen konnten sie es nicht gut verstehen.
Außerdem ist die Scanqualität nicht besonders gut.
Ich denke, ich sollte dieses Modell einmal ausprobieren.
Ich suche schon seit Jahren nach einer Lösung, die alle in Word und PowerPoint gespeicherten Materialien übernimmt und sie in ein standardisiertes Format umwandelt, damit sich die einzelnen Elemente in anderen Formaten wiederverwenden lassen.
Das ist ein zentraler Baustein, den man unbedingt braucht, um so ein System aufzubauen.
Jetzt braucht es noch eine Archiv- oder Historienfunktion, sodass man jedes Element leicht archivieren und wieder laden kann.
Wirklich großartige Arbeit.
Schade, dass solche Modelle nur auf Markdown abzielen.
In der Praxis gibt es viele Markdown-Varianten, und die Unterstützung für Fußnoten, Literaturverweise oder Abbildungen ist unzureichend.
Man braucht ein Format mit einer stärker strukturierten und klareren Spezifikation.
Tatsächlich trainieren wir das Modell nicht nur auf die Umwandlung in Markdown, sondern gleichzeitig auch auf semantisches Tagging.
Zum Beispiel werden Formeln als LaTeX extrahiert, und Bilder wie Diagramme oder Abbildungen werden detailliert mit
img-Tags beschrieben.Auch für Unterschriften (
signature), Wasserzeichen (watermark) und Seitenzahlen verwenden wir Tags.Komplexe Tabellen mit mehreren Zeilen/Spalten geben wir nicht als Markdown, sondern als HTML-Tabellen aus.
Das Konzept von „strukturiertem Markdown“ fand ich eigentlich spannender als das LLM-OCR-Modell selbst, aber am Ende wirkt es eher wie reines Tagging bestimmter Elemente, sodass die Nutzbarkeit außerhalb des Modells etwas begrenzt erscheint.
Mich würde interessieren, welche Vor- und Nachteile es im Vergleich zu docling(https://github.com/docling-project/docling) hat.
Mich würde interessieren, worin sich das von Datalab/Marker(https://github.com/datalab-to/marker) unterscheidet.
Ich habe viele PDF->MD-Konverter verglichen, und Marker ist bisher am besten, aber nicht perfekt.
Aus meiner persönlichen Erfahrung eignet sich Marker ziemlich gut für die Konvertierung von wissenschaftlichen Arbeiten mit komplexen Formeln und eingestreutem Code.
Wenn man zum Beispiel eine Seite aus einer Fortran-Arbeit zur inversen Laplace-Transformation mit einer Mischung aus Inline-/Display-Formeln und Monospace-Codeblöcken mit Marker verarbeitet, wird das Inline-$\sigma_0$ zu "<sup>s</sup> 0" zerstört und $f(t)$ zu "<i>f~</i>~t*!".
Die Stärke dieses Modells ist, dass es solche Teile intern korrekt ausgibt.
Hier ist ein passender Screenshot(https://imgur.com/a/Q7UYIfW).
Ich habe gerade erst mit meinem eigenen Quervergleich begonnen und wäre wirklich dankbar, wenn du eine Kandidatenliste teilen könntest.
Ich habe direkt ein PowerShell-Skript geschrieben, das dieses Modell von überall auf PDFs anwenden kann.
Beim eigenen Testen war es wegen der alten GPU (1080 8GB) ziemlich langsam, mindestens über 5 Minuten pro Seite.
Falls jemand ein PDF-zu-Markdown-Utility ausprobieren möchte, das auf Cloud Run läuft und externe GPUs unterstützt, sagt Bescheid.
Ich werde den Link teilen, sobald es fertig ist.
Ich habe es gerade auf Cloud Run zum Laufen gebracht und berichte über ein Beispielergebnis.
Wenn man sich einen Teil des Ergebnisses von animate.pdf ansieht, werden Titel, Autor, Verlag, Schwarz-Weiß-Illustrationen (mit Beschreibung per
img-Tag) und das Google-Digitalisierungs-Tag gut extrahiert.Auch das Inhaltsverzeichnis wird in Tabellenform perfekt ausgegeben.
Abgesehen von der langsamen Geschwindigkeit bin ich mit Funktion und Genauigkeit sehr zufrieden.
Ich habe großes Interesse an einem PDF-zu-Markdown-Service auf Cloud Run.
Mich würde interessieren, wie mit Dokumenten umgegangen wird, die Tabellen mit mehreren Spalten oder mehreren Zeilen enthalten, zum Beispiel dieses PDF mit
rowspanauf Seite 1 undcolspanauf Seite 29.Mich würde interessieren, wie gut die Erkennung nicht-englischer Texte ist.
Soweit ich weiß, liegt die Unterstützung anderer Sprachen bei bisherigen LLM-basierten OCRs deutlich hinter klassischer OCR zurück.
Meiner Erfahrung nach ist ChatGPT immer besser, wenn man Google Translate und ChatGPT direkt auf Bilder ansetzt.
Besonders bei handgeschriebenen japanischen Speisekarten übersetzt und erklärt es sehr gut.
Wenn bei einem Modell keine mehrsprachige Unterstützung erwähnt wird, fällt die Leistung bei nicht-englischen PDFs in der Praxis stark ab.
Außerdem ist das Basismodell (Qwen-2.5-VL-3B) mehrsprachig.
Ich habe auf Reddit auch einen Beitrag gesehen, dass es mit Chinesisch gut funktioniert(Link).
Ich habe versucht, ein Beispiel für einen koreanischen Kartenbeleg zu verarbeiten; es ist zwar langsam, liest aber inzwischen alles perfekt aus.