Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/06/2012, à 12:07

roger64

[Tuto] Utiliser un OCR pour reconnaître un livre au format PDF images

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

Dernière modification par roger64 (Le 20/01/2013, à 16:55)

Hors ligne

#2 Le 26/06/2012, à 08:09

roger64

Re : [Tuto] Utiliser un OCR pour reconnaître un livre au format PDF images

Solution Linux - Quelques remarques sur OCRcorrector

En tant qu'amateur pas spécialement masochiste, j'OCRise en moyenne un livre par semaine au format PDF images venant de Gallica (300 dpi). Je termine actuellement mon deuxième livre avec cette solution Linux et je confirme qu'elle est utilisable et correcte, ce qui est en soi une bonne nouvelle. J'ai décidé de continuer.

Les limitations d'emploi.

Cuneiform, dans de bonnes conditions de température et de pression affiche 96% de taux de reconnaissance. Entendons-nous, il s'agit le plus souvent de la police corps de texte, qui représente, il est vrai, l'immense majorité des signes d'un roman lambda. Mais dès qu'il y a des traînées grisâtres, du flou, des italiques, des polices un peu exotiques, cela chute dramatiquement. En faisant une comparaison qui vaut ce qu'elle vaut, on pourrait dire qu'avec cette voiture, on peut aller très loin (un livre), très vite (en une seule étape) mais qu'il vaut mieux prendre l'autoroute. C'est la vie. On ne peut donc pas tout traiter. Préférez les romans - de gare ou pas - aux traités spécialisés et donnez-lui des scans pas trop dégradés, sinon...

Parmi les particularités que j'ai remarquées sans les expliquer, Cuneiform se montre plus tolérant que FineReader 9 pour traiter les zones de texte obliques (pas la tour de Pise quand même). Il respecte bien les paragraphes mais il a tendance à en rajouter et à saupoudrer le texte de sauts de ligne dont il est cependant facile de se débarasser.

Le pré-traitement

On peut améliorer un peu le résultat: le pré-traitement des PDF par Briss, leur conversion en image par pdfimages sont vraiment très efficaces. Je me souviens d'erreurs grossières de cadrage automatique avec FineReader 9 qui m'obligeaient pour certains ouvrages à refaire ce cadrage en manuel. Ce type de phénomène appartient au passé si vous utilisez Briss.

Ensuite il y a les corrections, la majeure et la mineure. La majeure, celle d'OCRcorrector permettrait de corriger (à ce qu'il indique) environ un quart, voire un tiers, des fautes repérées. Cette proportion est à prendre avec précaution mais enfin, on peut supposer qu'elle élève un peu le pourcentage de 96%. Ne connaissant pas Python, je ne peux en dire davantage.

La mineure utilise sed: elle se contente de corriger des fautes récurrentes de transposition mais elle est efficace. Elle se révèle bien adaptée à Cuneiform parce que celui-ci transcrit le plus souvent littéralement; caractère par caractère, ce qui fait qu'il est assez facile de le corriger. (ex: c8té →côté) Certes, il y a des fois où il fait preuve d'une imagination débordante, par exemple pour transcrire le à isolé (six ou sept variantes possibles...) L'autre avantage est que ce type de correction reste sous le contrôle de l'utilisateur lambda qui peut donc le perfectionner au fil du temps.

Les pistes d'amélioration

Il y aurait bien la solution d'adapter un second moteur d'OCR (Tesseract?). L'auteur d'OCRcorrector - qui ne donne plus signe de vie depuis deux mois - avait indiqué qu'il l'avait essayé et avait été déçu. Néanmoins, s'il était possible de choisir de le brancher à titre d'alternative, ce serait sans doute un plus. Il faudrait pour cela connaître Python...

Par ailleurs, je vais ausi continuer au fil du temps à enrichir le fichier fix.sed.

A vous Houston... smile

Dernière modification par roger64 (Le 27/06/2012, à 15:27)

Hors ligne

#3 Le 27/11/2017, à 20:52

gotgot

Re : [Tuto] Utiliser un OCR pour reconnaître un livre au format PDF images

IL y a une page de documentation plutôt bien faite : https://doc.ubuntu-fr.org/ocr


Tout seul on vas plus vite, ensemble on vas plus loin.
Notre vision d'avenir est forte, Nos rèves aussi soyons vraie !

Hors ligne