Offline OCR

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von nafets.

    Offline OCR

    Hallo ihr lieben,

    ich habe aktuell das vorhaben einen Screenshot Offline (ist mir lieber) oder Online mit OCR auszulesen. Ich habe es gerade mit Ocr.space versucht was auch geklappt hat aber leider hat die Api kaum Einstellmöglichkeiten weswegen ich keine guten Ergebnisse erziele. Das beste ergebniss hatte ich mit der Testversion von IronOcr erzielt welche aber dann nach der Testzeit 399€ in der kleinsten Variante kostet. Hat jemand eine Idee welche Free Apis oder Bibliotheken ich benutzen kann? Am besten wenn jemand schon mal damit gearbeitet hat.

    Anbei ein Screenshot als Sample des Screenshots

    Vielen Dank!
    Bilder
    • Unbenannt.png

      474,41 kB, 376×691, 141 mal angesehen
    Liebe Grüße,
    C.O.D.E

    Testautomatisierung (TA):

    5%
    Du findest meinen Beitrag Hilfreich? :thumbup: Dann drück auf Hilfreich!
    Vollzitat des direkten Vorposts an dieser Stelle entfernt ~VaporiZed
    Hast du hierzu einen Beispiel Code? Ich finde alles rund um Tesseract ziemlich unübersichtlich! :/
    Liebe Grüße,
    C.O.D.E

    Testautomatisierung (TA):

    5%
    Du findest meinen Beitrag Hilfreich? :thumbup: Dann drück auf Hilfreich!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Das Beispiel von VB1963 ist etwas umständlich, weil es nicht nur Tesseract sondern auch noch OpenCV verwendet, das muss aber eigentlich nicht sein.

    Für C# gibts jede Menge Beispiele, bspw. das hier: c-sharpcorner.com/article/ocr-using-tesseract-in-C-Sharp/
    Den Code kannst du ganz einfach mit nem Konverter (der hier scheints bei dem Code zu tun: carlosag.net/tools/codetranslator/) übersetzen lassen.

    Alternativ gibts auch offizielle Beispiele, wie z.B. hier: github.com/charlesw/tesseract-…src/Tesseract.ConsoleDemo Wieder gilt, dass man den Code von C# zu VB.NET automatisch übersetzen lassen kann.
    Ich habe mich heute damit ein wenig befasst und es auch zum laufen bekommen. Wie genau kann ich die Engine jetzt Trainieren? (Ergebnisse sind noch sehr ungenau bis falsch) Und kann ich eine Wordlist mit Wörtern die möglich sind hinzufügen?

    Vielen dank, hat mir schon sehr weiter geholfen! :)
    Bilder
    • Tesse.PNG

      83,02 kB, 1.241×842, 113 mal angesehen
    Liebe Grüße,
    C.O.D.E

    Testautomatisierung (TA):

    5%
    Du findest meinen Beitrag Hilfreich? :thumbup: Dann drück auf Hilfreich!
    Selbst trainieren musst du normalerweise nicht, es gibt schon vortrainierte Modelle. Ne Übersicht über die "offiziellen" vortrainierte Modelle gibt's hier: tesseract-ocr.github.io/tessdoc/Data-Files.html
    In deinem Fall ist das jetzt nicht nötig, aber generell gibt's dort auch Varianten für andere Sprachen als Englisch.

    Wenn die vortrainierten Modelle in deinem Fall gar nicht funktionieren, würde ich mich an deiner Stelle erstmal nicht am selbst trainieren versuchen (das braucht immense Datenmengen), sondern versuchen, das Bild etwas automatisch vorzuverarbeiten: Du hast da Schrift in verschiedensten Farben vor einem wilden Hintergrund, das macht's für ein OCR-Modell leider wirklich schwer. Um es für das Modell einfacher zu machen, ist die einfachste Variante vermutlich, die Farben vom Bild so vorzuverarbeiten, dass die Schrift mehr oder weniger Schwarz und der Hintergrund mehr oder weniger weiß werden. Wenn es so weit kommt, kann ich ggf. nochmal genauer erklären, wie das geht, wenn du das nicht selbst hinkriegst.
    im grunde sind es immer die gleichen wörter die benötigt werden. (Lass es 200 Stk sein)... ich habe gedacht das wenn ich ihm eine begrenzte auswahl gebe er evtl weniger Probleme haben wird. Ich habe jetzt die neuste Sprachdatei herunter geladen (Englisch) aber leider hat er jetzt noch mehr Probleme.

    Ich probiere mal ein wenig mit dem Bild zu spielen.. Melde mich dann

    Edit: Ich habe das Bild als BMP Monochrom speichern lassen und das Ergebnis ist um einiges Besser.
    Bilder
    • WhatsApp Image 2021-07-31 at 21.39.15.jpeg

      230,5 kB, 1.264×974, 101 mal angesehen
    Liebe Grüße,
    C.O.D.E

    Testautomatisierung (TA):

    5%
    Du findest meinen Beitrag Hilfreich? :thumbup: Dann drück auf Hilfreich!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „C.O.D.E“ ()

    In dem Fall lohnt es sich vmtl, an der Wortliste herumzuschrauben.

    Trainieren ist nicht ganz so einfach - das Problem dabei ist, dass du dem Ding zum trainieren (bzw in dem Fall hier "Finetuning", d.h. du nimmst ein schonmal trainiertes Modell und trainierst es mit für dich relevanten Beispielen weiter) nicht nur Wörter, sondern Bilder mit dem dazugehörigen Text und der präzisen Position des Textes geben musst. Das ist mit erheblichem Aufwand an manueller Datenerstellung verbunden.

    PS: Hast du auch wirklich das Modell vom "tessdata_best (Sep 2017)"-Link (Sprache wählt man dann später aus) verwendet? Ist jetzt vielleicht ne blöde Frage, aber sicher ist sicher :D

    Edit: Es gibt auch nen offiziellen Guide, der ein paar potenzielle Bildverarbeitungsschritte beschreibt: tesseract-ocr.github.io/tessdoc/ImproveQuality.html

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nafets“ ()