Utilisateur:Kipmaster/djvu-ocr
But et utilisationModifier
But : Il s'agit de faire l'ocr d'un fichier Djvu (avec tesseract), et d'enregistrer cet ocr dans le fichier Djvu lui-meme.
Cela permet ensuite de pouvoir importer l'ocr sur Wikisource automatiquement avec python djvutext.py -index:Livre:Katia.djvu -djvu:Katia.djvu -pages:5-100
Utilisation : perl djvuocr.pl fichier.djvu
Pré-requis : le script a besoin de tesseract et djvu-utils. Sous Ubuntu, la commande suivante installe les paquets nécessaires :
sudo apt-get install tesseract-ocr tesseract-ocr-fra djvu-utils
code[1]Modifier
fichier : djvuocr.pl
#!/usr/bin/perl if ( $#ARGV < 0 ) { print "donner en premier argument un lien vers le fichier Djvu\n" ; exit 0 ; } $inputdjvu = $ARGV[0] ; $imagetmp = "/tmp/temp.tif" ; $djvutmp = "/tmp/outdjvu" ; print "traitement de $inputdjvu\n" ; # determiner le nombre de pages $nbpages = `djvused "$inputdjvu" -e 'n'` ; print "nombre total de pages : $nbpages" ; for ($i=1 ; $i <= $nbpages ; $i++) { print "OCR de la page $i\n" ; # extraction de la page sous forme image `ddjvu -format=tiff -page="$i" "$inputdjvu" $imagetmp` ; `tesseract $imagetmp /tmp/outocr -l fra` ; print "OCR done\n" ; open(TXT, '/tmp/outocr.txt') ; open(TXTDJVU, ">$djvutmp") ; print TXTDJVU "(page 0 0 1 1\n" ; while ($line=<TXT>) { $line =~ s/\"/\\\"/g ; print TXTDJVU "(line 0 0 1 1 \"$line\")\n" ; } print TXTDJVU ")\n" ; close (TXT) ; close (TXTDJVU) ; # ecriture du txt dans le djvu `djvused "$inputdjvu" -e 'select $i; remove-txt' -s` ; `djvused "$inputdjvu" -e 'select $i; set-txt $djvutmp' -s` ; } # note : structure qui fonctionne # print TXTDJVU "(page 0 0 1 1\n" ; # print TXTDJVU " (line 0 0 1 1 \"toto\")\n" ; # print TXTDJVU " (line 0 0 1 1 \"toto la la\")\n"; # print TXTDJVU ")\n" ;
- ↑ Pour faire la reconnaissance d’un texte ancien avec des ſ (s longs), il est plus efficace de modifier langue de reconnaissance de fra en Fraktur. Après avoir ajouté cette langue, comme indiqué pour la langue fra, il faut modifier la ligne du script :
`tesseract $imagetmp /tmp/outocr -l fra` ;
en`tesseract $imagetmp /tmp/outocr -l Fraktur` ;
.