web-dev-qa-db-fra.com

Comment utiliser l'OCR à partir de la ligne de commande sous Linux?

J'ai plusieurs milliers de pages de pages de livres numérisées. Chaque page est enregistrée individuellement au format JPG. L'écriture est claire, mais les polices varient et les pages contiennent des images et des illustrations.

Je dois créer une liste de tous les mots apparaissant dans chaque fichier JPG. Existe-t-il un outil en ligne de commande pour numériser une image répertoriant les mots qui apparaissent? Il n'a pas besoin d'avoir une numérisation parfaite, juste une estimation.

33
Village

tesseract est probablement la solution la plus utilisée ici. Il est disponible dans la plupart des référentiels de packages, par exemple,

Sudo apt install tesseract-ocr

et peut être utilisé avec

tesseract input.png out.txt
29
Nico Schlömer

Installez imagemagick, pdftotext (trouvé dans un package nommé poppler-utils dans certains gestionnaires de paquets) et ocrmypdf . Ce dernier est un logiciel OCR rapide (ocr prend beaucoup de CPU, et il est configuré pour utiliser tous vos cœurs), open-source et fréquemment mis à jour. Cette approche est peut-être exagérée car elle essaie en fait d'attribuer une chaîne à chaque mot au lieu de simplement étiqueter un mot, mais j'ai eu beaucoup de mal à trouver un logiciel OCR open source bon et facile à utiliser en général. Ensuite, dans le répertoire où vous avez enregistré tous vos JPG:

$ convert *.jpg pictures.pdf
$ ocrmypdf pictures.pdf scanned.pdf
$ pdftotext scanned.pdf scanned.txt
$ wc -w scanned.txt
19
rien333

Augmentez le fichier image.png de 480%, passez en niveaux de gris, remplissez avec du blanc, affinez puis extrayez en utilisant l'OCR tesseract. Cela fonctionne bien la plupart du temps pour moi, à l'exception des très grandes polices et du blanc sur noir. Si les polices sont très grandes, n'augmentez que de 200% ou 300%.

 convert -colorspace gray -fill white  -resize 480%  -sharpen 0x1  file.png file.jpg
 tesseract file.jpg file

Le résultat est dans file.txt.

9
Eamonn Kenny

TL; DR

for i in /path_to/*.jpg;do ./myocr.sh $i $(basename $i .jpg);done

#!/bin/bash
# PROGRAM=myocr.sh
if [ "$1" ] && [ -e "$1" ]; then
  TMPF=$(mktemp myocr.sh.XXXXXXXX.tif)
  DEST="$2"
  if [ ! "$DEST" ]; then
    DEST="${1%.*}.txt"
    if [ -e "$DEST" ]; then
      echo "$DEST already exists; please provide a new textfile name" >&2
      exit 1
    fi
  fi
  /usr/bin/convert "$1" -colorspace Gray -depth 8 -resample 200x200 -flatten -alpha Off $TMPF \
  && /usr/bin/tesseract $TMPF "$DEST"
  EX=$?
  /bin/rm -f $TMPF
  [ $EX -eq 0 ] && [ "$TERM" ] && echo "created $DEST"
  exit $EX
else
  echo "Usage: $0 imagefile [textfile]" >&2
  echo " creates a plain text file with the text found in imagefile" >&2
  exit 1
fi

Source: https://help.ubuntu.com/community/OCR

0
Antonio Feitosa

Pour les utilisateurs de Linux, rien ne fonctionne aussi bien que d'utiliser Calibre pour convertir un pdf en docx. https://calibre-ebook.com/download_linux

0
Larry Bradley