Ouvrir le menu principal

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

codeModifier

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" ;