Benutzer:Casimir~dewikisource

aus Wikisource, der freien Quellensammlung

Als ich die Scans von Meyers Blitz-Lexikon gesehen habe, habe ich mich entschlossen, ein OCR-Programm zu schreiben, mit dem man auch gleichzeitig korrekturlesen kann, ohne ständig mit den Augen zwischen dem gescannten und dem erkannten Text hin und her springen zu müssen (durch Überlagerung beider Bilder).

Da ich mich schon immer gefragt habe, warum Texterkennung so schwierig ist, schreibe ich erst einmal das Programm komplett selbst, statt auf die Arbeit anderer zurückzugreifen (z.B. Gamera). Außerdem bereitet es mir meistens größere Schwierigkeiten, die Denkweise anderer Leute zu verstehen als ein Problem von Anfang an selbst zu lösen. Da ich bereits etwas Erfahrung mit der Programmierung bildverarbeitender Programme habe, sollte das möglich sein.

Fortschritt des Projektes:

  • Hintergrundkorrektur (fertig)
  • Bild drehen, entzerren und ausschneiden (fertig)
  • Segmentierung von Text und Bildern (funktioniert bei den meisten Bildern, kann aber noch weiter verbessert werden), mögliche Kriterien:
    • horizontale und vertikale Leerräume (fertig)
    • Umrandung der Rasterbilder mit einer Linie
    • das Raster selbst erkennen
    • Vorhandensein von Textzeilen (fertig)
    • Vorhandensein einzelner Textzeichen
  • Interaktive Segmentierung
  • Textzeichen separieren (fertig, Bild siehe unten)
  • Lernphase:
    • Ähnlichkeit von Zeichen erkennen und Zeichen danach gruppieren, "Prototypen" bilden (fertig)
    • Zeichen durch Benutzer charakterisieren lassen (Zeichen, normal/fett/kursiv) (fertig)
  • Zeichenerkennung (funktioniert schon ganz gut; Trennung zusammengewachsener Buchstaben fehlt noch)
  • bessere Regeln für das Einfügen von Leerzeichen finden
  • evtl. Autokorrektur bei bekannten Wörtern
  • Funktion zum Korrekturlesen
  • Zeichenerkennung beschleunigen (fertig: ca. 1s pro Zeile, also 3min für eine reine Text-Seite)
  • Batchverarbeitung, also alle automatisch durchführbaren Schritte für alle Seiten ausführen (fertig)

Mit der Segmentierung und der Texterkennung werde ich mich parallel beschäftigen, schon deshalb, weil das Vorhandensein von Textzeichen ein mögliches Kriterium für die Segmentierung ist.

Beispielbild für den Verarbeitungsstand nach Hintergrundkorrektur, Drehung, Entzerrung, Randbeschneidung und Erkennung von horizontalen (grün) und vertikalen (rot) Leerräumen (Mittellinie blau):

Trennung der Zeichen (noch nicht perfekt, aber zum Trainieren dürfte es fast schon ausreichen):

Ich habe das Programm mit S. 36, Z. 0-136 trainieren lassen. Dabei sind noch nicht alle Zeichen ausreichend oft vorgekommen. Trotzdem liefert die Texterkennung in den folgenden 10 Zeilen schon ein brauchbares Ergebnis (unbekannte Zeichen werden als Fragezeichen angezeigt):

gama, türk. St., Kleinasien, 15 000 E ; Ruinen v. Pergamon
(2.–3. Jh. v. Chr.). — Bergamo, ital. St., Lombardei, 81 000 E.
Bergamotte, apfelsinenähnl. Citrus-Art, Mittelmeergeb.,
W-Indien ; Schale liefert B.nöl ,? auch Birnensorte. — Berg-
bau (↑ ?Tafel Sp. 9), Lagerstättenwirtschaft, umfaßt Auf-
suchung, Erschließung, Gewinnung,Förderung,Aufbereitung
u. Verhüttung nutzbarer Mineralien jederArt, also der festen
(Kohlen, Erze, Salze, Gesteine), der fl?ssigen (Erdöl, Sol-,
Heilquellen) u. der gasför?igen (Kohlensäure, Erdgas). —
Berg baufreiheit : jeder kann Mineralien aufsuchen (»schür-

Die Fehler werden sich noch reduzieren durch

  • mehr Training
  • Trennung zusammengewachsener Zeichen
  • evtl. Wörterbuchkorrektur