Extraire du texte d'un document numérisé

10

Existe-t-il un moyen de sélectionner le texte d'un document numérisé? (la sortie est un jpg) Quel type d'outils Ubuntu propose-t-il pour effectuer une telle tâche? Y a-t-il des bibliothèques que je peux utiliser au lieu de binaires logiciels pré-construits pour faire la même chose? J'ai essayé de le convertir en .pdf en utilisant Imagemagick puis en essayant de sélectionner le texte, ce qui n'a évidemment pas fonctionné.

Dananjaya
la source

Réponses:

9

Le nom de ce type de procédure est OCR (Optical Character Recognition). Ce lien offre également quelques choix:

gocr - OCR en ligne de commande
fuzzyocr - plugin spamassassin pour vérifier les pièces jointes des images
libhocr0 - OCR hébreu
ocrad - Programme de reconnaissance optique de caractères
ocrfeeder - Analyse de la mise en page des documents et système de reconnaissance optique des caractères
ocropus - analyse de documents et système OCR
tesseract-ocr
cunéiforme - système OCR multilingue 

Et cela suggère que Tesseract ( très ancien tutoriel ) est la meilleure option de ceux-ci. Essayez donc.

Rinzwind
la source
3

Il y a quelque temps, j'ai évalué les différents packages OCR dans Ubuntu, constaté que Tesseract était le moins mauvais d'entre eux (mais assez mauvais) et écrit un script d'encapsulation pour l'OCRing (car Tesseract veut des formats d'entrée obscurs comme TIFF). Voici mon ~/bin/ocr:

#!/bin/sh
# usage: ocr filename.jpg
if test -z "$1"; then
    echo "usage: ocr filename.jpg [...]"
    echo "needs imagemagick and tesseract-ocr"
    echo "if tesseract fails, check if you've got tesseract-ocr-eng installed"
fi
tmpdir="$(mktemp -d)"
for fn in "$@"; do
  convert "$fn" "$tmpdir/page.tif"
  tesseract "$tmpdir/page.tif" "$tmpdir/page" 2>&1 | grep -v '^Tesseract Open Source OCR Engine$'
  cat "$tmpdir/page.txt"
  cp -i "$tmpdir/page.txt" "${fn%.jpg}.txt"
  rm "$tmpdir/page.tif" "$tmpdir/page.txt"
done
rm -r "$tmpdir"

Le prétraitement des images avec GIMP (conversion en noir et blanc à l'aide de l'outil Threshold) semble avoir beaucoup aidé.

J'espère que les choses se sont améliorées depuis. J'ai vu le nom OCR Feeder dans des articles de blog récemment, je ferais un essai.

Marius Gedminas
la source
2

Le package Tesseract-ocr est une ligne de commande. Si vous voulez un programme avec une interface graphique, j'utilise "gscan2pdf" et vous pouvez le trouver dans le Ubuntu Software Center.

Dans gscan2pdf, il vous suffit de cliquer sur la petite icône de numérisation en haut. Je pense que cela vous donne deux ou trois options, GOCR qui n'est pas très bon, et Tesseract qui fonctionne admirablement. Choisissez Tesseract et à partir de ce point, vous devez cliquer sur l'onglet approprié pour trouver les paramètres de résolution. Votre meilleur pari est 300 ou même 600 et Tesseract fera bien.

Les documents mal numérisés, tordus ou anciens ne se convertissent pas bien. Bonne chance!

PS .. Je continue de lire que Tesseract ne peut lire que les images TIFF. Ce n'est pas le cas pour moi. Je peux également importer des fichiers JPG ou PNG.

PPS ... désolé pour les modifications! Vous pouvez également essayer OCRFeeder dans le centre logiciel. Je n'ai pas encore essayé.

I Heart Ubuntu
la source
0

J'ai Linux Mint 17.2 x32 Cinnamon. Ces étapes fonctionneraient probablement aussi dans Ubuntu 14.04 x32.

  1. Installer Tesseract OCR sudo apt-get install -y tesseract-ocr tesseract-ocr-fra Vous pouvez ajouter d'autres langues en installant des packages supplémentaires. Cette capture d'écran provient de synaptic: packages linguistiques Tesseract dans Synaptic

Utilisation de Tesseract

OPTION 1 - en ligne de commande, ouvrez le terminal, puis allez dans le dossier où vous conservez les fichiers image (jpg, png) et exécutez la commande:

a) convertir tous les fichiers image en texte

for i in *png; do b=`basename "$i" .png`; tesseract -l eng "$i" "$b" text; done

Pour fusionner tous les fichiers texte en un, exécutez une commande cat *.txt >> all.txt

b) convertir tous les fichiers image en fichiers hocr (ouvrir avec Firefox)

for i in *png; do b=`basename "$i" .png`; tesseract -l eng "$i" "$b" hocr; done

OPTION 2 - par GUI

a) Installez gImageReader et utilisez-le

sudo add-apt-repository -y ppa:sandromani/gimagereader
sudo apt-get update
sudo apt-get install -y gimagereader

b) La deuxième demande est le VietOCR. La version actuelle est 4.0, alors téléchargez VietOCR-4.0.zip

Décompressez les fichiers et ouvrez VietOCR.jar par Java:

Ouvrez VietOCR par Java Si vous n'avez pas Java installé, vous pouvez l'installer à partir du référentiel ou vous pouvez installer Oracle Java 8. officiel Étapes pour installer Oracle Java 8 dans Ubuntu 14.04

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default

Je recommande VietOCR, car il vous permet de convertir des fichiers pdf en OCR, la conversion en masse est également une option.

anthony0013
la source