Festgebannte Untertitel von der VHS/Laserdiscs (closed captioned) rippen

  • Ich bin Schwerhörig und bin auf Untertitel angewiesen.

    Hoffentlich hat jemand mit dieser Software gute Erfahrungen gemacht und zwar Untertitel von den Medien zu rippen.

    Also, ich habe versucht, mit Avi Sub Detector zu beschäftigen, der am besten und einfachsten von OCRs festgebrannte Untertitel (closed captioned) von der VHS/Laserdiscs rippt, die ich den Film mit UT aufgezeichnet habe.

    Ich habe eine kurze Position in der Ausgabe getestet. Es zeigt mir, dass neben den richtigen Untertitelsätzen auch schlechte Untertitelsätze zu sehen sind und man sieht, dass die Abstände zweier Buchstaben sowie auch viele Sätze sind verdoppelt. Und außer diese Sätzen gibt es auch alle mit „Frame...“ zu sehen, wie zum Beispiel das hier:

    Code
    Frame=142:DLC=8;MED=60;MBC=4;MBX=2;LMB=236;RMB=368;

    Das ist sehr schlecht, weil es zu viel mit Rechtschreibprüfung zu tun hat, dass ich das nicht tun möchte. So sie sehen aus:

    Kann man das in der Einstellung von dieser obengenannte verlinken Software einstellen, damit die Untertitelsätze korrekt ausgegeben werden? Oder gibt solche Software wie zum Bsp.: Subtitle Edit, der es bearbeiten kann. Dort kann man Untertitel für Hörgeschädigte autom. weglassen, wenn man es will und habe gedacht, vielleicht kann man auch für diese machen? Mit manuell (mit Hand) ist doch blöd und Zeitverschwendung. Soweit ich weiß kann Aegisub nur ersetzen.

    Hab auch versucht mit andere Software VideoSubFinder oder SubRip. Beide können nur schlecht erstellen, am schlimmstenfalls ist SubRip, da er zu kompliziert ist und kann die richtige Sätze nicht erfassen, weil der hintere schwarze Hintergrund/Balken von weiße Sätzen gemattet sind und die Buchstaben werden verschwommen und braucht viel Arbeit als wenn die Untertitel ohne schwarze Hintergrund haben (das habe ich schon bei anderen Film gemacht) und bei VideoSubFinder werden viele Sätze vermisst, bzw. fehlen. Das geht ja gar nicht.

    Hat jemand einen Tipp?

    3 Mal editiert, zuletzt von DeafYakuza (8. November 2018 um 16:07)

  • Ich finde was das finden von Untertiteln angeht ist VideoSubFinder am besten/einfachsten (auch wenn es etwas buggy ist). Eine richtig gute OCR-Erkennung habe ich noch mit keinem Programm hinbekommen. Allerdings habe ich mal ein tool gesehen was ein Stapel an Bildern zum OCR an google senden kann. Wäre ggf die beste Kombination.

    Ansonsten versuch doch mal im internet auf seiten wie opensubtitles zu schauen ob es den sub nicht schon gibt.

    Wichtig beim VideoSubFinder ist, dass man bei Settings "Using fast version" das Häckchen wegmacht! Und das cropping nicht vergessen.

  • Mit VideoSubFinder habe ich trotz das Häckchen "Using fast version" deaktiviert und die Images von Untertiteln werden nicht erfasst und im RGBImages gespeichert. Ebenso werden die Bilder der Untertitel im FRDImages nicht richtig aufgezeichnet. Siehe Bilder:


    RGBImages
    0_00_55_422__0_00_58_624.jpeg

    FRDImages
    0_00_55_422__0_00_58_624!!.jpeg


    Und bei AVI Sub Detector werden Zeilen aufgeteilt oder manche werden beschnitten und sehen sie zum Bsp. aus:


    Schnitt 1:


    Schnitt 2:

    Woran liegt das, dass aus einem Untertitel mit 2 Sätzen in 2 Teile aufgeteilt wird?

    Weißt du mit welchen Einstellung soll ich nehmen? Finde nichts, wo man UT in gewünschten Zeilen wählt, Hab zwar richtig gecroppt und trotzdem bekomme ich solches Problem. Auf eure Hilfe freue ich mich sehr.

    2 Mal editiert, zuletzt von DeafYakuza (13. November 2018 um 00:17)

  • Mit avi sub detector habe ich auch nur einmal etwas ausprobiert, also -> quasi 0 erfahrungen damit.

    Wenn du einen Ausschnitt mit mehrern Untertiteln hochladen könntest, dann könnte ich auch mal rumprobieren wenn du möchtest. (denke eine gecroppte version sollte reichen).

    Subrip könnte hier evtl auch ganz gut funktionieren da der Hintergrund immer schwarz ist. Siehe hier

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Edit

    hier ist noch eine Anleitung für avi sub detector

    http://www.wxfs.org/guides/HowtoRi…SubDetector.pdf

    VapourSynth Paketmanager VSRepo + GUI

    Avisynth Paketmanager AVSRepo + GUI

    Einmal editiert, zuletzt von FatFaster (16. November 2018 um 17:21)

  • Danke für deine Antwort. Ich kenne beide und habe auch versucht damit klar zu kommen, leider ohne Erfolg.

    Heute in der Nacht werde ich eine kleine Datei (1-2 Min. Film) erstellen und poste mal hier, dann kannst du es versuchen.

  • Hier zum download: https://www94.zippyshare.com/v/3E5RyONY/file.html

    PW: utrip

    Für den Fall gebe ich dir Link: http://zuggy.wz.cz/guides/video.htm

    Mach mir ein Screenshots von deiner Einstellung, falls du Erfolg hast und auf welchen Buchstaben du gezielt hast (siehe Bild 4 mti Text).

    Hatte auch kein Erfolg mit den Seiten blau zu füllen (Bild 8-14), oft werden Sätze mit blauen Zeile bedeckt (befüllt).

    Zur Info, auf dem Video sind 4 Zeilen Untertitel. Damit muss man 4 Linien aufteilen und bei mir klappte es nicht, alle Buchstaben in weiß erhalten zu bleiben, manche Buchstaben werden in grau gezeigt, obwohl ich versucht habe richtig einzustellen - leider erfolglos.

    Ich hoffe, du kriegst es hin. Viel Erfolg! :)

  • Es gibt Teilerfolge mit Subrip und Avisubdetector, mit VideoSubFinder hat es nicht wirklich geklappt.

    Im Grunde ist Avisubdetector schon eine super Lösung, nur ist das Teil zu buggy, friert öfters ein und hat 1 mio Einstellungen ohne eine Anleitung.

    Mit Subrip habe ich glaube ich das maximum rausgeholt. Aber es hat ein großes Problem: Es kann mit "instabielen" Untertiteln schlecht umgehen, sprich die werden eher als neuer Untertitel erkannt. Gut, dafür gibt es den "same subtitel" Knopf. Und das "Fill" rechts und links schluckt einzelne Wörter, also muss man darauf verzichten. UND mehr als 2 Zeilen sind eher schlecht -> also 2 Durchläufe nötig.


    Mit dem Avisubdetector klappt das Finden der Untertitel eig ganz gut in der Vorschau. Das Problem sind die Grenzwerte, also wann es ein neuer Sub ist oder nicht bzw dass es ein sub ist. Dieser Teil ganz untem im Settings Tab bei Detection ist ein großes Fragezeichen für mich. Das muss man irgendwie mit den Werten aus dem Stats Tab korrekt einstellen.

    Mit dem manual mode kann man natürlich auch arbeiten dh Text selber eingeben. Quasi wie bei Subrip ohne ocr.

    Generell denke ich die Beste Lösung wäre wenn man alle subs als Bild extrahieren kann (was Avisubdetector ja theoretisch kann). Die Bilder werden dann aber mit https://de.wikipedia.org/wiki/Tesseract_(Software) OCRt. Das ist quasi das "Beste" ocr programm was öffentlich verfügbar ist.


    [Blockierte Grafik: https://i.imgur.com/j0t99Rp.png]

    [Blockierte Grafik: https://i.imgur.com/ttlM437.png]


    Übrigens ich habe das Video leicht mittel VapourSynth bearbeitet. Mit MotionMask werden bewegung maskiert und diese werden dann einfach sehr dunkel gemacht mittels Tweak. Damit hat man schon mal weniger Fehlerquellen die eine ähnliche Helligkeit wie die subs haben.

    Wenn man hier die Subs quasi mittels FreezeFrame perfekt stabilisieren könnte, dann wäre die Erkennung in Subrip zb sehr viel besser. Dann hätten wir fast eine DVD-Sub Situation.

    Code
    clip= core.ffms2.Source(r"D:\Download\Video.avi")
    c = adjust.Tweak(clip, bright =-180)
    clip = haf.SMDegrain(clip, tr=3, thSAD=600, prefilter=1)
    m = clip.motionmask.MotionMask(th1 = 5, th2=10)
    clip = core.std.MaskedMerge(clip, c, m)

    Edit:

    VideoSubFinder funktioniert doch, aber nur für helle Szenen. Da aber erstaunlich gut. Die oberen Subs nimmt er gar nicht, erkennt nur "Müll". Evtl braucht man mehr (Video)-Bild dafür. Man kann das eig recht gut anpassen, wenn man den Test Button nutzt und die einzelnen Tests jeweils durchschaltet und dann jeweils die Werte anpasst.

    VapourSynth Paketmanager VSRepo + GUI

    Avisynth Paketmanager AVSRepo + GUI

    3 Mal editiert, zuletzt von FatFaster (17. November 2018 um 13:00)

  • Was neues gefunden https://github.com/pocketsnizort/pythOCR

    Allerdings bekomme ich pyenchant über pip nicht installiert, muss wohl kompiliert werden.

    Aber, ich konnte das filter script testen. Das Ergebnis sieht schon mal sehr gut aus https://www87.zippyshare.com/v/qOW0Sk3p/file.html (adblocker nutzen!)

    Wenn man jetzt noch mit einem avisynthfilter wie http://avisynth.nl/index.php/Exte…Frame_Detectors das quasi stabilisieren könnte dann wäre schon ne menge vorarbeit geleistet für die ocr Programme.


    Im script musste alle write csv befehle entfernen, da stimmt was mit windows nicht. Wichtig ist der SeuilI und SeuilO parameter.

  • Vielen liebend Dank für deine Tipps!

    Ich bin über dein Können sehr begeistert und beneide es auch. Leider wird bei mir mit AviSubDetector eine Fehlermeldung aufgetreten, wenn ich eine avs-Datei (Avisynth) abrufe. Fehlermeldung: "Cannot open file "". Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnug ist falsch". Diesen Fehlermeldung verstehe ich nicht, obwohl avs-Datei im Desktop mit dem Namen existiert.

    Wenn ich diesen Fehlermeldung ignoriere und trotzdem geht es auch. Bei OCR und Auto Mode werden unbekannte Formen zu häufig abgefragt, als ob sie Untertitel erkannt hätten, was aber nicht stimmt. Da müsste ich den Button "No subtitle" bei Auto Mode, oder "Ignore" bei OCR häufiger klicken.

    Ich hab schon mal einen anderen Film (B-Movie) komplett manuell gearbeitet. also Sätze selbst eingegeben und lief sehr gut, aber das war nur einmal. Nochmals will ich nicht mehr machen, weil sie mir viel Zeit kostet.

    Hab nach deine Tipps VapourSynth und co. installiert, leider ich kann mit der manuellen Installation von VapourSynth nichts anfangen. Mir wäre lieber eine vernünftige Installation, wo alles automatisch in den Ordner installiert und nicht von Hand an, in diversen Ordner verschiebt und einfügt.

    Mit Ausnahme kann ich mit Avisynth umgehen, aber soweit bin ich auch noch nicht gekommen, hab erst vor ein paar Monate mit Avisynth zum ersten Mal auf mein 32bit Rechner installiert und ein bisschen studiert und bisher lief ganz gut. Neben Win10 64bit habe ich auch Win7 32bit auf separate Festplatte installiert, um Videos mit Avisynth zu bearbeiten.

    Ich hoffe, mit Avisynth geht das auch, nur ich weiß nicht welche Filter installiert werden muss und wie es funktioniert. Muss ja, erstmal dll-Dateien in den Plugins installieren, dann ausprobieren.

    Mit VirtualDub habe ich auch ähnliches gemacht und zwar mit dem Filter von SubLog Extractor, um Bild schwarz zu kriegen und die Untertitel in weiß erhalten zu bleiben, aber dann sind die Buchstaben verändert und sie bewegen auch, das man bei der OCR für jede Buchstaben häufiger den Button akzeptieren wiederholen müsste. Wie du es gesagt hast, dass man sie stabilisieren kann, wäre eine super Lösung für mich. Aber Problem ist, dass dort auch außer Untertitel sehr viele unnötige Formen auftreten. Siehe Bild:

    VDSubLogExtractor.JPG

  • So kurz vorm ausrasten habe ich es doch noch geschafft mit pythOCR.

    Das Problem warum man keine CSV schreiben konnte lag an 2 Dingen

    1. der Pfad war fehlerhaft UND

    2. das Beispielscript will zb. nach http://Video.avi/default schreiben, aber es darf keinen Ordner der Video.avi heißt geben!


    Die Kopfzeile des Beispielscriptes sieht also wie folgt aus:

    Spoiler anzeigen

    FichierSource="Video.avi"

    #FichierSource = FichierSource.decode("utf-8") # [Arg] Fichier vidéo source

    dir = "C:/bla/blu/VapourSynth64Portable"#dir#.decode("utf-8") # [Arg] Dossier où placer les résultats produits (sous-images)

    DimensionCropBox=[710,120] # Taille en largeur et hauteur de la CropBox délimitant les sous-titres à OCR.

    HauteurCropBox=0 # Hauteur de la CropBox délimitant les sous-titres à OCR.

    HauteurCropBoxAlt=0 # Hauteur de la CropBox Alternative, utile pour l'OCR des indications. Double le temps de traitement. Mettre à -1 pour désactiver.

    Supersampling=-1 # Facteur de supersampling (multiplication de la résolution de la vidéo). Mettre à -1 pour calculer le facteur automatiquement.

    ExpandRatio=1 # EXPERIMENTAL ! Facteur Expand/Inpand. La valeur 1 est adaptée pour un Supersampling automatique (1080p). Calcul typique de la valeur : ExpandRatio="RésolutionFinale"/1080.

    ModeU='sinc' # 'sinc' (2 taps, plus rapide), 'nnedi3' (plus lent) ou 'waifu2x' (beaucoup plus lent), contrôle la méthode d'Upscale.

    SeuilI=180 # Seuil délimitant les sous-titres. Cette valeur correspond à la luminosité minimale de l'intérieur (Inline).

    SeuilO=60 # Seuil délimitant les sous-titres. Cette valeur correspond à la luminosité maximale de l'extérieur (Outline).

    SeuilSCD=0.03 # Un seuil trop bas augmente le nombre de faux positifs, un seuil trop haut ne permet pas de détecter tous les sous-titres.

    Das cropping ist hier blöderweise mit Absolutwerten statt relativen gelöst. 710,120 ist die Video resolution, damit nix gecroppt wird.

    Etwas weiter im script steht dann

    displayname = os.path.basename(FichierSource) + "_"

    + "_" habe ich einfach hinzugefügt damit wir einen Video.avi_ ordner bekommen.

    Das Ergebnis ist im Anhang.

    Das OCR Script selber hat auch nicht so richtig funktioniert, also habe ich die aufrufe für die Bilder im "alt" Ordner mal per Hand gemacht:

    tesseract 1945.png 1945.png -l eng --psm 6

    Die Erkennung ist nicht schlecht, aber natürlich nicht perfekt.


    ---

    Der Ansatz mit der szenenerkennung bzw der csv datei ist ja eig nicht schlecht. Man könnte in einem 2ten Durchlauf diese Werte nehmen und per FreezeFrame jeweils von frame x bis y einfrieren. Das als Video abspeichern und per Subrip oder avisubdetector PER HAND dann jeweils eintragen. Ein paar doppelte Bilder werden vorkommen, aber diese kann man ja dann per "same sub-Button" easy abarbeiten.


    Edit:

    Ne andere Idee ist mir noch gekommen um die subs zu verbessern. Um dieses "wabern" zu reduzieren müsste man alle frames eines subs ineinander mischen, dann sollten diese eigentlich recht gut aussehen. Natürlich klappt das nur wenn es bei der Aufnahme keine starken Ruckler gab.

    Wäre jetzt nur für das OCR notwendig.

  • Vielen Dank erstmal.

    Muss ich Vapisynth64.exe installieren, dann die zu Entpackte Dateien entpacken und in den Ordner verschieben und einfügen, oder reicht nach Entpacken sofort bedienen? Ich kannte Vapoursynth zuvor nicht.

  • Die 7z entpacken reicht, ist ja portable.

    Den Vapoursynth editor dann starten. Das script von pythocr anpassen. Wichtig ist dass das script am Ende einmal komplett durchläuft damit alle Szenen erkannt werden und in die csv geschrieben werden können. Dafür kannst du den eingebauten Benchmark nutzen.

    Tipp: Wenn du Windows 10 nutzt und OCR ausprobieren willst, dann installier dir Ubuntu aus dem store. Mit WSL kannst du dann einfach per apt-get tesseract installieren.

    VapourSynth Paketmanager VSRepo + GUI

    Avisynth Paketmanager AVSRepo + GUI

    Einmal editiert, zuletzt von FatFaster (19. November 2018 um 21:29)

  • Das ganze sieht für mich viel zu intensiv und kompliziert aus, das ich von Vapour nur Bahnhof verstehe. Auch ich habe nach youtube geguckt, wie man damit umgeht, leider ist sehr unterschiedlich. Außerdem will ich benötigte Programme nicht auf mein Win10 noch einmal extra installieren lassen. Alles was zur Videobearbeitung mit Avisynth und co. zu tun hat, werden nur auf Win7 32bit gearbeitet.

    Hab Vapoursynth gestartet und die Script in den Vapourscript hineinkopiert, dann Videosource geändert und abgespeichert, dann mit Subrip versucht die abgespeicherte Datei zu öffnen, leider wird Avisynth benötigt, was ich auf Win10 nicht haben will. Einfacher geht's nicht? Zum Bsp. mit Avisynth Script?

    Edit: Außerdem habe ich pythocr nicht finden können. Wo finde ich den?

    2 Mal editiert, zuletzt von DeafYakuza (20. November 2018 um 17:57) aus folgendem Grund: Edit

  • Kannst du mir bitte sagen, welche 32-bit Version soll ich Python installieren? Dort gibt es ja 3 verschiedene Versionen.

    Wie soll ich das Script von Pythocr anpassen und wo ist sie zu finden? Ich suche sie vergebens. :(

    Einmal editiert, zuletzt von DeafYakuza (22. November 2018 um 17:29)

  • Installier besser die 64bit variante. Manche Plugins gibt es in kompilierter form nur in 64bit. web-based order executable, beides geht (x86 = 32bit). Aber wieso benutzt du nicht einfach das portable Paket was ich verlinkt habe? -> VapourSynth Portable FATPACK Die 7z entpacken und loslegen.


    Das Beispielscript für das Filtern ist hier: https://github.com/pocketsnizort/…master/exemples

    Das OCR script: https://github.com/pocketsnizort/…ster/pythoCR.py

    Aber da das OCR script eh nicht perfekt läuft empfehle ich nur das Video zu filtern und dann mit subrip/avisubfinder oder sonst was per Hand den Text einzugeben. Und zumal du ja noch weitere Dinge für das OCR installieren müsstest....


    Ich habe das Beispielscript ein wenig für dich angepasst und etwas verbessert bzw. vereinfacht mit paar Kommentaren (siehe Anhang)

    Du musst im Grunde folgendes machen:

    1. VS portable runterladen, entpacken

    2. in VS editor dieses script laden

    3. Den Pfad zum Video anpassen

    4. evtl einige Parameter anpassen (siehe Kommentare im script)

    5. Das ganze über "encode video" abspeichern

    6. fertig -> du hast ein video wo (hoffentlich) nur subs enthalten sind.

  • Ich war vorhin ein wenig verwirrt. Ja, ich habe nur von deinem Link downloaded und es entpackt. Die entpackte Version liegt im C: neben WIndows, Programe x86,... im 64-bit System.

    Ich versuche jetzt mal weiter damit zu beschäftigen.

  • Bei mir wird das Encodieren von Video durchgefallen. Siehe hier:

    Und die Videoquelle sieht bei mir so aus:

    Code
    FichierSource="D:\Users\DEAFYAKUZA\Desktop\Video.avi"
  • Also nachddem ich die Schrägestrich geändert habe und zwar von links "\" nach rechts "/" und bekam dann noch eine Fehlermeldung "

    No module named 'cv2' ". Im nächsten Schritt googelte ich nach dieser Fehlermeldung und fand diese Seite, wie man opencv installiert.

    Nach downloaden von opencv habe ich sie entpackt, um eine Datei namens "cv2.pyd" in den Ordner C:\VapourSynth64Portable\VapourSynth64\Lib\site-packagesLib\site-packages\ zu kopieren. Wie dort steht: http://opencvpython.blogspot.com/2012/05/instal…for-python.html

    Dann nur diese nächste Fehlermeldung und weiß nichts weiter, hm...


    Scrip:


    Fehlermeldung:

    Was meint er, dass etwas beim Laden nicht geklappt hat. Und wie sieht's jetzt weiter aus?

    3 Mal editiert, zuletzt von DeafYakuza (25. November 2018 um 19:49)

Jetzt mitmachen!

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