Allgemeine Einführung
Versatile OCR Program ist ein Open-Source-Tool für die optische Zeichenerkennung (OCR), das für die Verarbeitung komplexer akademischer und pädagogischer Dokumente entwickelt wurde. Es kann Text, Tabellen, mathematische Formeln, Diagramme und Schemata aus PDF-, Bild- und anderen Dokumenten extrahieren und strukturierte Daten erzeugen, die sich für das Training von maschinellem Lernen eignen. Es unterstützt mehrere Sprachen, darunter Englisch, Japanisch und Koreanisch, und das Ausgabeformat ist JSON oder Markdown für die Bequemlichkeit der Entwickler.
Funktionsliste
- Extrahiert mehrsprachigen Text, unterstützt Englisch, Japanisch, Koreanisch usw., kann auf andere Sprachen erweitert werden.
- Erkennen von mathematischen Formeln und Generieren von LaTeX-Code und natürlichsprachlichen Beschreibungen.
- Analysiert Tabellen, behält die Zeilen- und Spaltenstruktur bei und gibt strukturierte Daten aus.
- Analyse von Diagrammen und Schemata, um semantische Anmerkungen und Beschreibungen zu erstellen (z. B. "Dieses Diagramm zeigt die vier Phasen der Zellteilung").
- Verarbeitung komplexer Layout-PDFs, genaue Identifizierung formelintensiver Absätze und visueller Elemente.
- Gibt JSON- oder Markdown-Format mit semantischem Kontext aus, um das KI-Training zu optimieren.
- Verwenden Sie DocLayout-YOLO, Google Vision API, MathPix und andere Technologien zur Verbesserung der Erkennungsgenauigkeit.
- Bietet eine hohe Genauigkeit von 90-95% für echte akademische Datensätze (z. B. EJU Biology, Eastern University Maths).
- Unterstützt die Stapelverarbeitung, um mehrere Dateieingaben zu verarbeiten.
Hilfe verwenden
Einbauverfahren
Um das Versatile OCR-Programm zu verwenden, müssen Sie das Repository klonen und die Umgebung konfigurieren. Nachfolgend finden Sie die detaillierten Schritte:
- Klon-Lager
Läuft im Terminal:git clone https://github.com/ses4255/Versatile-OCR-Program.git cd Versatile-OCR-Program
- Erstellen einer virtuellen Umgebung
Python 3.8 oder höher wird empfohlen. Erstellen und aktivieren Sie eine virtuelle Umgebung:python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows
- Installation von Abhängigkeiten
Installieren Sie die für das Projekt erforderlichen Bibliotheken:pip install -r requirements.txt
Zu den Abhängigkeiten gehören
opencv-python
undgoogle-cloud-vision
undmathpix
undpillow
usw. Stellen Sie sicher, dass die Netzwerkverbindung stabil ist. - Konfigurieren des API-Schlüssels
Das Projekt stützt sich auf externe APIs (z. B. Google Vision, MathPix) für die erweiterte OCR-Verarbeitung:- Google Vision API: in
config/
Verzeichnis, um diegoogle_credentials.json
geben Sie den Schlüssel für das Dienstkonto ein. Um den Schlüssel zu erhalten, besuchen Sie bitteGoogle Cloud-Konsole. - MathPix API: in
config/
Verzeichnis, um diemathpix_config.json
Ausfüllenapp_id
im Gesang antwortenapp_key
. Registrieren Sie sich für ein MathPix-Konto, um den Schlüssel zu erhalten. - Vorlagen für Konfigurationsdateien sind im Projekt verfügbar
README.md
.
- Google Vision API: in
- Überprüfen der Installation
Führen Sie das Testskript aus, um sicherzustellen, dass die Umgebung korrekt ist:python test_setup.py
Wenn es keine Fehler gibt, ist die Installation abgeschlossen.
Arbeitsablauf
Das Versatile OCR-Programm läuft in zwei Phasen ab: erste Extraktion und semantische Verarbeitung.
1. erste OCR-Extraktion
in Bewegung seinocr_stage1.py
Extrahieren von Rohelementen (Text, Tabellen, Diagramme usw.):
python ocr_stage1.py --input sample.pdf --output temp/
--input
Geben Sie die Eingabedatei an (PDF oder Bild, z. B. PNG, JPEG).--output
Gibt das Verzeichnis der Zwischenergebnisse an, das Koordinaten, beschnittene Bilder usw. enthält.- Unterstützung für die Stapelverarbeitung: Verwenden Sie
--input_dir
Geben Sie den Ordner an.
2. semantische Verarbeitung und endgültige Ausgabe
in Bewegung seinocr_stage2.py
Konvertierung von Zwischendaten in eine strukturierte Ausgabe:
python ocr_stage2.py --input temp/ --output final/ --format json
--input
Gibt das Ausgabeverzeichnis für die erste Stufe an.--format
Wählen Sie das Ausgabeformat (json
vielleichtmarkdown
).- Die Ausgabe enthält Text, Formelbeschreibungen, tabellarische Daten und die semantische Kennzeichnung von Diagrammen.
Hauptfunktionen
1. mehrsprachige Textextraktion
Extrahieren Sie Text aus PDF oder Bildern mit Unterstützung für mehrere Sprachen:
python ocr_stage1.py --input document.pdf --lang eng+jpn+kor --output temp/
python ocr_stage2.py --input temp/ --output final/ --format markdown
--lang
Geben Sie die Sprache in folgendem Format aneng
(Englisch),jpn
(Japanisch),kor
(Koreanisch), Mehrsprachig+
Verbindungen.- Die Ausgabedatei enthält Textinhalte und semantischen Kontext, gespeichert als Markdown oder JSON.
2. mathematische Formelidentifikation
Formeln identifizieren und LaTeX-Codes und Beschreibungen erzeugen. Zum Beispiel, die Formelx^2 + y = 5
Die Ausgabe ist "eine quadratische Gleichung mit den Variablen x und y". Operation:
python ocr_stage1.py --input math.pdf --mode math --output temp/
python ocr_stage2.py --input temp/ --output final/ --format json
--mode math
Erkennung der Aktivierungsformel.- Die Ausgabe enthält LaTeX-Code und Beschreibungen in natürlicher Sprache.
3. die Analyse der Tabellen
Extrahieren Sie die Tabelle unter Beibehaltung der Zeilen- und Spaltenstruktur:
python ocr_stage1.py --input table.pdf --mode table --output temp/
python ocr_stage2.py --input temp/ --output final/ --format json
--mode table
Spezialisiert auf die Bearbeitung von Formularen.- Die Ausgabe ist JSON mit Zeilen- und Spaltendaten und einer zusammenfassenden Beschreibung.
4. grafische und schematische Analyse
Analysieren Sie Diagramme oder Grafiken, um semantische Anmerkungen zu erzeugen. Ein Liniendiagramm könnte z. B. "Liniendiagramm mit Temperaturveränderung von 2010 bis 2020" ergeben. Aktion:
python ocr_stage1.py --input diagram.pdf --mode figure --output temp/
python ocr_stage2.py --input temp/ --output final/ --format markdown
--mode figure
Aktivieren Sie die Chartanalyse.- Die Ausgabe enthält die Bildbeschreibung, die Extraktion der Datenpunkte und den Kontext.
Tipps und Tricks
- Verbesserte GenauigkeitEingabe hochauflösender Dateien (300 DPI empfohlen). Zur Laufzeit hinzufügen
--dpi 300
Optimieren Sie das Parsen von Bildern. - Stapeldatei: Verwendung von
--input_dir data/
Verarbeitet alle Dateien im Ordner. - benutzerdefinierte Sprache:: Leitartikel
config/languages.json
Um eine Sprache hinzuzufügen, müssen Sie das entsprechende OCR-Modell (z.B. Tesseract language pack) installieren. - Debugging-Protokoll: Hinzufügen
--verbose
Detaillierte Betriebsinformationen anzeigen. - komprimierte Ausgabe: Verwendung von
--compress
Verringern Sie die Größe der JSON-Datei.
caveat
- Vergewissern Sie sich, dass die Eingabedokumente eindeutig sind; Dokumente von schlechter Qualität können die Erkennungsgenauigkeit verringern.
- Für die externe API ist ein stabiles Netzwerk erforderlich, und es wird empfohlen, einen Ersatzschlüssel zu konfigurieren.
- Das Ausgabeverzeichnis muss über genügend Speicherplatz verfügen, da große PDFs größere Dateien erzeugen können.
- Gemäß der GNU AGPL-3.0-Lizenz müssen abgeleitete Projekte den Quellcode öffentlich zugänglich machen.
- Das Projekt plant, die KI-Pipeline-Integration innerhalb eines Monats zu veröffentlichen, bleiben Sie also dran.
Mit diesen Schritten können die Benutzer schnell loslegen, komplexe Dokumente verarbeiten und KI-Trainingsdaten generieren.
Anwendungsszenario
- Extraktion von Daten aus der akademischen Forschung
Forscher können Formeln, Tabellen und Diagramme aus Prüfungsarbeiten oder Aufsätzen extrahieren, um Datensätze mit semantischen Anmerkungen zu erstellen. So wurden z. B. Mathematik-Prüfungsunterlagen der Eastern University für das Training von Geometriemodellen in JSON konvertiert. - Digitalisierung von Bildungsressourcen
Schulen können Papierlehrbücher oder Prüfungsunterlagen in ein elektronisches Format konvertieren, mehrsprachige Texte und Grafiken extrahieren und durchsuchbare Archive erstellen. Geeignet für die mehrsprachige Bearbeitung von internationalen Programmen. - Konstruktion von Datensätzen für maschinelles Lernen
Entwickler können strukturierte Daten aus akademischen Dokumenten extrahieren, um hochwertige Trainingssätze zu erstellen. So lassen sich beispielsweise Zellteilungsdiagramme aus biologischen Abhandlungen extrahieren, Beschreibungen von Stadien kennzeichnen und Bilderkennungsmodelle trainieren. - Archivierung der Dokumentenverarbeitung
Bibliotheken können historische wissenschaftliche Dokumente in ein digitales Format konvertieren und dabei Formeln und Tabellenstrukturen beibehalten, um die Effizienz der Suche zu verbessern. Unterstützung der PDF-Verarbeitung von komplexen Layouts. - Instrumente zur Prüfungsanalyse
Bildungseinrichtungen können den Inhalt von Fragebögen analysieren, Fragetypen und Diagramme extrahieren, statistische Berichte erstellen und die Unterrichtsgestaltung optimieren.
QA
- Welche Eingabeformate werden unterstützt?
PDF und Bilder (PNG, JPEG) werden unterstützt. PDFs mit hoher Auflösung werden empfohlen, um die Genauigkeit zu gewährleisten. - Wie kann ich die Genauigkeit meiner Formularerkennung verbessern?
Verwenden Sie eine klare Dokumentation, damit--dpi 300
. Für japanische Tabellen übertrifft die Google Vision API MathPix und kann in derconfig/
Mittlere Einstellung. - Muss ich eine kostenpflichtige API verwenden?
Google Vision und MathPix APIs erfordern ein kostenpflichtiges Konto, aber Open-Source-Module wie DocLayout-YOLO sind kostenlos. Es wird empfohlen, die API für beste Ergebnisse zu konfigurieren. - Wie kann ich eine neue Sprache hinzufügen?
Compilerconfig/languages.json
Fügen Sie den Sprachcode und das OCR-Modell (z. B. Tesseract language pack) hinzu. Starten Sie das Programm neu, damit es wirksam wird. - Was ist, wenn die Ausgabedatei zu groß ist?
Kosten oder Aufwand--compress
Komprimieren Sie JSON, oder wählen Sie das Markdown-Format. Es ist auch möglich, das Ausgabemodul einzuschränken, z. B. um nur Text zu extrahieren (--mode text
). - Wie kann ich mich an der Projektverbesserung beteiligen?
Pull Requests können über GitHub oder durch Kontaktaufnahme mit dem Autor unter ses425500000@gmail.com eingereicht werden. Sie können gerne Code beitragen oder Feedback zu Problemen geben.