Linux - OCR sur fichiers images PDF
Cette solution mise au point et testée sur Linux est libre, facile à mettre en œuvre et pratique parce qu'elle utilise systématiquement le traitement par lot. Le logiciel OCR utilisé est Cuneiform. Elle permet notamment de reconnaître (O.C.R.) des ouvrages au format PDF images (ex: Gallica ou autres). Prenons un livre de 300 pages au format
PDF image tel que vous pouvez le télecharger sur le site de Gallica ou Google Books (7 à 10 mégas en moyenne). Vous voulez en tirer un document odt ou html de façon à publier un EPUB ou tout autre texte.
Logiciels nécessaires
pdfsam est dans les paquets.
pdfimages fait partie du paquet
poppler-utils. Utilisez python 2.6 ou plus.
sudo apt-get install python-2.6 python-qt4 python-numpy cuneiform pdfsam poppler-utils zenity
Télechargez ensuite:
Briss et
OCRcorrector et Fusion
Marche à suivre
1. pdfsam (préparation PDF) Facultatif.
En cas de fichier vraiment hénaurme, vous pouvez utiliser
pdfsam (plugin split) soit pour diviser le livre soit pour sélectionner les pages normalisées.Vous pouvez aussi parfaitement laisser le livre tel quel et ne pas utiliser
pdfsam. Le choix variera selon le contenu de chaque livre et votre méthode de travail. La copie d'écran ci-dessous n'est qu'un exemple et pas un modèle.
http://img15.hostingpics.net/thumbs/mini_182246pdfsam2.png
2. Briss ("nettoyage" PDF)
Ouverture du livre avec
Briss : découpage logiciel des zones hors texte (Commencez par vérifier les rectangles, puis quand vous êtes satisfaits: Menu: Action: crop PDF) → cropped.pdf
C'est un point important. Prenez quelques minutes pour apprendre à obtenir les meilleurs résultats sur les pages homogènes (paires, impaires).
Délai: deux minutes environ pour un livre de 300 pages (dix mégas).
3. pdfimages (conversion en images)
Conversion des pages PDF découpées en images pbm avec
pdfimages (une ligne de commande - voir
man pdfimages)
pdfimages cropped.pdf fichier
Vous obtenez alors vos images sous cette formpe: → fichier-000.pbm, fichier-001.pbm, etc.
Délai: dix secondes pour un livre de 300 pages (dix mégas).
4. OCRcorrector (reconnaissance)
Sélectionner le groupe d'images à reconnaître (utilisez Shift). Reconnaissance des images pbm et conversion en fichiers html avec
OCRcorrector (traitement par lot - Menu: OCR/Lancement groupé)
Vous obtenez vos pages html sous cette forme: → fichier-000.html, fichier-001.html, etc.
Le couple Cuneiform/OCRcorrector est très efficace et exceptionnellement rapide pour reconnaître des groupes d'images allant jusqu'au livre complet. Chaque image pbm est convertie en une page html portant le même numéro. Les images contenues dans le texte seront placées dans des dossiers séparés portant l'extension .files.
Délai: trois minutes pour un livre de 300 pages (dix mégas).
Jusqu'ici, tout était parfait. Ça va se gâter: la correction de groupe et la fusion d'OCRcorrector qui devraient être les phases suivantes, ne fonctionnent pas ou mal. Il a donc été nécessaire de mettre au point une solution de contournement.
Le script Fusion (réalisé grâce à l'aide reçue sur les forums Ubuntu et MobileRead) va maintenant prendre le relais.
5. Script Fusion (fusion, première correction)
Les pages html reconnues par OCRcorrector sont nommées de la façon suivante : xxxxx-000.html, xxxxx-001.html, etc.
Préparez un répertoire de travail: mettez le script
Fusion et la liste
fix.seb avec vos pages html à fusionner et corriger.
Lancez le script
Fusion: vous allez automatiquement et en quelques secondes:
- concaténer (fusionner) les pages html reconnues en produisant un fichier unique nommé complet.html.
Vous pouvez le faire travailler sur n'importe quelle suite de fichiers, à condition de désigner le premier fichier de votre série. Exemple: pour fusionner une série quelconque commençant par le fichier nommé bijou-050.html, il suffit d'entrer le NOM bijou, et le NOMBRE 050.
- chercher/remplacer des erreurs récurrentes causées par l'OCR dans ce fichier complet.html.
Le script Fusion utilise une liste de corrections établie dans le fichier joint
fix.sed. Ces corrections sont modifiables sous réserve de respecter la syntaxe de sed. Si vous complétez cet embryon de liste avec vos propres corrections, merci de bien vouloir faire un retour.
Si cette commande ne produit rien, c'est que vous aurez commis une erreur dans le libellé de la liste. Pour la détecter, lancez une vérification avec un terminal et lisez les commentaires. La commande à utiliser dans ce cas là est:
sed -f fix.sed -i complet.html
6. OCRcorrector (deuxième correction)
Vous pouvez maintenant lancer la "vraie" correction avec OCRcorrector sur le fichier complet.html.
Menu: Correction: Lancer (voir copie d'écran)
Délai: moins de cinq minutes pour trente pages (varie selon processeur). Sauvegardez.
Un exemple d'OCRcorrector au travail:
http://img15.hostingpics.net/thumbs/mini_788523Capturedeux.png
7. Relecture (.../..) Comme d'habitude la partie la plus longue.
CONCLUSION
Cette solution d'OCR est dès aujourd'hui utilisable et donne de bons résultats. Ce n'est pas une Rolls mais c'est une bonne routière.
Nota: Vous pouvez bien sûr lancer OCRcorrector directement sur un lot d'images (ex Scantailor) mais je n'ai pas fait l'essai.
Nota2: Pour regarder ailleurs,
ce qui se fait dans le monde du libre..
Attention! Ne mettez-pas vos images à reconnaître dans un dossier autre chose de purs caractères alphabétiques non accentués!!! Même pas des apostrophes!! Ceci peut provoquer un refus silencieux de charger vos images (ou une erreur dans le terminal qui risque de vous désespérer - question de chaîne utf-8, etc.).
Vous trouverez ici un
essai sur vingt pages allant du PDF découpé, aux images puis à aux simples pages html et enfin au fichier complet.html. Aucune retouche additionnelle n'a été faite au traitement "usine".