Falls jemanden der C++ Programmieren kann langweilig ist,...

  • Hab ne Idee für ein kleines Projekt aber keine Muße mich dran zu setzen und bevor ich die Idee komplett verwerfe poste ich sie mal, vielleicht fühlt sich ja jemand motiviert,...

    Idee: automatisches idx/vob -> srt (crossplatform + command line)
    Schritt 1: VobSub mit subp2tiff (aus dem ogmrip project) in eine Reihe von Tiff Bildern umwandeln
    -> man muss gucken, dass man subp2tiff alleine kompiliert bekommt (die Abhängikeit von libtiff ist okay, die brauch man auch bei Tesseract)
    Schritt 2: tiff Bilder automatisch mit Tesseract per OCR umwandeln.
    -> ist simple
    Schritt 2+: Ausgaben von 2. auffangen und anhand der Zeiten aus dem .idx File ein .srt file erstellen
    -> einfach die STDOUT Ausgabe abfangen und merken, idx lässt sich einfach parsen und srt ist einfach zu erstellen

    Denke das größte Problem ist den subrip Teil von ogmrip alleine zu kompilieren. (soweit ich das sehe besteht keine Abhängigkeit zu anderen Bibliotheken außer libtiff, welches es als .lib und dll bei Tesseract im svn gibt)
    Der Teil danach ist eher ne Fingerübung.

    Cu Selur

    Ps.: Denke von dem Projekt hätten auch andere was, da dann zig GUI tools automatisches OCR hätten,.. ;)

  • Ging da in erster Linie um das 'Füttern von Tesseract mit den Bildern' und das Auslesen der erkannten Zeichen, in wie weit das ohne Fehler geht und wie viele dieser Fehler man mit Wörterbüchern&Co abfangen kann muss man dann sehen. (Wie gut Tesseract an sich ist kann man z.B. in SubtitleEdit sehen, welches Tesseract nutzt.

  • Hab ich. Und da waren auch bei nem Sub mit vernünftiger Schrift(größe) und Farbe zig Fehler drin, die ich von Hand nachbessern musste.


    MultiMakeMKV: MakeMKV Batchverarbeitung (Win)
    MultiShrink
    : DVD Shrink Batchverarbeitung
    Offizieller Übersetzer von DVD Shrink deutsch

  • Wie gesagt, man kann durchaus noch einiges mit Wörterbüchern verbessern. ;)
    (so dass man im Aufruf des Tools dann noch eine Sprache mitgibt und anhand der Sprache noch Wörterbücher oder irgendwelche Rechtschreibungsroutinen gecheckt werden)
    Hab mir Tesseract noch nicht so viel angeguckt, ich vermute man kann aber auch die Erkennungsdaten irgendwie aktualisieren/aufbessern,..

    Cu Selur

  • einfach die STDOUT Ausgabe abfangen und merken

    Wenn dabei auch nicht-ASCII Zeichen zu übergeben sind, dann ist das gar nicht sooo trivial!

    Viele CLI Tools geben Text einfach in der lokalen Codepage aus, so dass du, je nach System-Einstellung, für alle in der aktuellen ANSI-Codepage nicht darstellbaren Zeichen schöne "?" erhältst ;)

    Für mich hat es sich bewährt Text immer als UTF-8 über den STDOUT auszugeben. Ist dann beim Einlesen natürlich ebenfalls zu beachten.

    Leider machen printf(), fprintf() und Co einem UTF-8 Strings kaputt, weil das C-Runtime "stdout" und "stderr" standardmäßig im "Text" Modus geöffnet hat (und der der kennt kein UTF-8).

    Es ist also noch etwas mehr Arbeit nötig, um Unicode (UTF-8) Strings korrekt über den STDOUT auszugeben...

  • Ist mit Qt kein Problem. ;)

    Den STDOUT zu capturen und zu parsen schon.

    Das Problem ist aber viel mehr, dass die meisten CLI Tools erst gar kein Unicode/UTF-8 ausgeben, sondern einfach (w)printf und Co benutzen.

    Wenn dann als String nur "????" ankommt, kannst du mit Qt auf GUI-seite leider auch nix mehr machen...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!