YoloCR is a convenient OCR script.

Yuri Zero 5889ef89f6 Better BlackFrame.jpg generation. 1 week ago
README c013e6b748 Add YoloTime.sh. 6 months ago
README_EN.md c013e6b748 Add YoloTime.sh. 6 months ago
YoloCR.sh 5889ef89f6 Better BlackFrame.jpg generation. 1 week ago
YoloCR.vpy 5889ef89f6 Better BlackFrame.jpg generation. 1 week ago
YoloDebInstallation.sh 073d8b4067 Check root dans YoloDebInstallation.sh. 2 months ago
YoloResize.vpy a3fcf87382 Rendre YoloResize.vpy plus intuitif. 2 months ago
YoloSeuil.vpy a1e8bdd25e Remplacement de nnedi3 par znedi3. 1 year ago
YoloTime.sh c013e6b748 Add YoloTime.sh. 6 months ago

README

Pour les nuls :
Installer les prérequis avec le script d'installation pour Debian Stretch.
Vous pouvez installer Debian Stretch dans une machine virtuelle telle que Virtualbox.


Prérequis :
- FFmpeg : https://www.ffmpeg.org/
- Vapoursynth R36+ : http://www.vapoursynth.com/
- le plugin FFMS2 pour Vapoursynth : https://github.com/FFMS/ffms2
- le script HAvsFunc pour Vapoursynth : http://forum.doom9.org/showthread.php?t=166582
nécessite mvsfunc (http://forum.doom9.org/showthread.php?t=172564) et adjust (https://github.com/dubhater/vapoursynth-adjust)
- le plugin fmtconv pour Vapoursynth : http://forum.doom9.org/showthread.php?t=166504
- (Conseillé) Vapoursynth Editor : http://forum.doom9.org/showthread.php?t=170965
- (Optionnel) le plugin edi_rpow2 pour Vapoursynth : http://forum.doom9.org/showthread.php?t=172652
nécessite znedi3 (https://github.com/sekrit-twc/znedi3)
- (Très optionnel) le plugin Waifu2x-w2xc pour Vapoursynth : https://github.com/HomeOfVapourSynthEvolution/VapourSynth-Waifu2x-w2xc
- Note :
Les plugins Vapoursynth (.so sur Unix, .dll sur Windows) doivent être placés dans l'un de ces dossiers : http://www.vapoursynth.com/doc/autoloading.html
Les scripts Vapoursynth (.py) doivent être placés dans le dossier "site-packages" de votre installation Python3.

Prérequis Unix :
- Tesseract (version 3.03+ recommandée) et son dictionnaire français : https://github.com/tesseract-ocr/tesseract
- Imagemagick (si vous utilisez le moteur LSTM de Tesseract) : https://www.imagemagick.org/
- Links : http://links.twibright.com/
- Simple X Image Viewer (mode GUI uniquement) : https://github.com/muennich/sxiv
- xdotool (Linux uniquement, mode GUI uniquement) : http://www.semicomplete.com/projects/xdotool/
- GNU Parallel (version 20131122+ recommandée) : http://www.gnu.org/software/parallel/

Prérequis Windows :
- Cygwin : https://www.cygwin.com/
/!\ Si vous utilisez Windows 10, vous pouvez installer BashOnWindows à la place de Cygwin.
- Paquets à activer durant l'installation de Cygwin :
bc
gnupg
links
make
perl
wget
tesseract-ocr
tesseract-ocr-fra
- ABBYY FineReader (Optionnel), si vous ne souhaitez pas utiliser ou installer Tesseract
- Installation de GNU Parallel, depuis la console Cygwin :
wget -O - pi.dk/3 | bash
if [ -f ~/bin/parallel ]; then mv ~/bin/parallel /usr/local/bin/; fi
- Utilisation de la console Cygwin :
https://doc.ubuntu-fr.org/tutoriel/console_commandes_de_base
Le chemin du disque C est "/cygdrive/c".
Les scripts devront être lancés depuis la console Cygwin.


Script d'installation des prérequis pour Debian Stretch :
sh YoloDebInstallation.sh

PPA Vapoursynth pour Ubuntu et Linux Mint (non testé) :
https://launchpad.net/~djcj/+archive/ubuntu/vapoursynth


0) Vous pouvez déterminer les paramètres à rentrer dans YoloCR.vpy à l'aide de Vapoursynth Editor et des scripts annexes.
Dans l'éditeur, vous pourrez vérifier vos résultats avec la touche "F5".
Ouvrez d'abord YoloResize.vpy dans Vapoursynth Editor.
FichierSource est le chemin de la vidéo à OCR. Ne pas oublier les apostrophes.
DimensionCropBox vous permet de limiter la zone à OCR. Cela augmentera la vitesse de traitement ET la fiabilité de l'OCR qui s'en suivra.
HauteurCropBox définit la hauteur du bord inférieur de la CropBox.
Notez que ces deux paramètres se règlent avant upscale.
Vous pouvez ensuite passer la valeur de Supersampling à -1 et vérifier que vos sous-titres ne sont pas en contact avec le bord blanc.
Ouvrez maintenant YoloSeuil.vpy dans l'éditeur.
Paramétrez les paramètres FichierSource, DimensionCropBox et HauteurCropBox comme précedemment.
Choisissez le ModeS qui vous convient. 'L' dans le cas d'un seuil blanc ou noir, successivement 'R', 'G' et 'B' dans le cas contraire.
Réglez le Seuil. Les valeurs pourront être trouvées à l'aide du "Color Panel" disponible dans la fenêtre de prévisualisation.
Dans le cas de l'inline (intérieur des sous-titres), cherchez le seuil minimum.
Dans de le cas de l'outline (bordure des sous-titres), cherchez le seuil maximum.
Vous pouvez vérifier les valeurs sucessivement trouvées en modifant le paramètre Seuil par celles-ci.
Dans le cas de l'inline, les sous-titres doivent rester pleinement visibles.
Dans de le cas de l'outline, l'outline doit être complètement noire.
Si vous ne comprenez pas l'utilisation de ce script, passez à l'étape suivante.
Vérifiez dans YoloCR.vpy que le résultat du filtrage vous convient.
Augmentez le SeuilO (seuil outline) si il manque des lettres.
Diminuez le SeuilI (seuil inline) si cela permet une amélioration de la propreté des lettres.

1) Filtrer la vidéo à l'aide du script YoloCR.vpy.
N'oubliez pas d'éditer les premières lignes de YoloCR.vpy en fonction de votre fichier source et des réglages trouvés précedemment.
Une fois les paramètres configurés, fermez l'éditeur pour éviter que le fichier "SceneChanges.log" qui sera créé durant l'étape suivante ne soit écrasé par erreur.
vspipe -y YoloCR.vpy - | ffmpeg -i - -c:v mpeg4 -qscale:v 3 -y Vidéo_Filtrée.mp4
Faites bien attention à utiliser un nom différent pour votre "Vidéo_Source" et votre "Vidéo_Filtrée".
Vous disposez maintenant d'une vidéo OCR-isable et des informations de changement de scène.

2) Script d'OCR en lui-même : YoloCR.sh.
La vidéo OCR-isable et les informations de changement de scène doivent être dans le même dossier.
./YoloCR.sh Vidéo_Filtrée.mp4

Vous pouvez utiliser YoloTime.sh à la place de YoloCR.sh si vous souhaitez seulement le Time des sous-titres.

3) C'est l'heure du Check :D


Utilisation de YoloCR en série :
1) Vérifiez bien que sxiv n'est pas installé.
2) Assurez-vous que le répertoire YoloCR contient tous les épisodes à OCR et uniquement ceux-ci.
3) Commentez la première ligne de YoloCR.vpy. ("FichierSource" devient "#FichierSource".)
4) Placez vous dans le répertoire de YoloCR et utilisez cette commande bash :
for file in *.mp4; do filef="${file%.*}_filtered.mp4"; vspipe -y --arg FichierSource="$file" YoloCR.vpy - | ffmpeg -i - -c:v mpeg4 -qscale:v 3 -y "$filef"; ./YoloCR.sh "$filef"; done
"*.mp4" signifie "tous les fichiers possédant l'extension mp4". Documentez vous sur les regex bash pour plus de souplesse.


Bugs connus :
- Le moteur LSTM de Tesseract produit un OCR de moindre qualité (notamment au niveau de la détection des italiques).
Utiliser les traineddata du moteur Legacy à la place : https://github.com/tesseract-ocr/tessdata
- Cygwin (Windows), à la première utilisation du script YoloCR.sh.
Signal SIGCHLD received, but no signal handler set.
./YoloCR.sh: ligne 121: ((: > 4 : erreur de syntaxe : opérande attendue (le sym bole erroné est "> 4 ").
L'erreur disparaît à partir de la seconde utilisation.
- Babun (Windows), un florilège d'erreurs lors de l'utilisation du script YoloCR.sh.
Installez Cygwin à la place.

Contact : https://discord.gg/USD6wK3