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

30

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.

Village
la source
github.com/tesseract-ocr/tesseract/wiki/Command-Line-Usage - c'est le moteur derrière ocrmypdf et, en général, vous permettra d'avoir moins d'étapes dans votre configuration.
oakad
4
Duplication possible de l' OCR sur les systèmes Linux
curiousdannii
2
le doublon est un peu ancien, des trucs nouveaux peuvent exister. Je vais voter laisser ouvert.
Archemar

Réponses:

25

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
Nico Schlömer
la source
19

Installer imagemagick, pdftotext(trouvé dans un package nommé poppler-utilsdans certains gestionnaires de packages) 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
rien333
la source
2
fwiw, ceci utilise le Tesseract mentionné ci-dessous.
2018 exic
ocrmypdfa fait ma journée
L'astronaute de tous les jours
l'idée de devoir d'abord convertir en pdf est tout simplement loufoque. pourquoi ne puis-je pas simplement saisir un fichier jpg et extraire du texte brut?
Michael
Vous pouvez utiliser un fichier bash pour effectuer toutes les lignes de commande pour vous.
projetmbc
7

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.

Eamonn Kenny
la source
C'est ce qui a fonctionné pour moi avec un très petit morceau de texte non anglais avec une taille de police minuscule. Incroyable.
Avio
0

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

Antonio Feitosa
la source