View Single Post
Old 06-24-2012, 01:44 AM   #156
roger64
Wizard
roger64 ought to be getting tired of karma fortunes by now.roger64 ought to be getting tired of karma fortunes by now.roger64 ought to be getting tired of karma fortunes by now.roger64 ought to be getting tired of karma fortunes by now.roger64 ought to be getting tired of karma fortunes by now.roger64 ought to be getting tired of karma fortunes by now.roger64 ought to be getting tired of karma fortunes by now.roger64 ought to be getting tired of karma fortunes by now.roger64 ought to be getting tired of karma fortunes by now.roger64 ought to be getting tired of karma fortunes by now.roger64 ought to be getting tired of karma fortunes by now.
 
Posts: 1,409
Karma: 846401
Join Date: Jan 2009
Device: KoboGlo
Bonjour

Édition

Histoires crânes de Richard O'Monroy.

Trois des vingt-sept nouvelles n'ont pas de lettrines, simplement parce que la forme du début ne s'y prêtait pas (courts dialogues et guillemets)

OCR Linux sur fichiers images PDF

J'ai testé une solution OCR Linux en remplacement de Fine Reader 9 (Windows) que j'utilisais ces dernières années. Pour réaliser le recueil cité plus haut, j'ai utilisé comme source ce document de 320 pages au format PDF image télechargé sur le site de Gallica (7 mégas).

Après quelques tâtonnements, cette solution, bien que perfectible, est désormais utilisable. Elle est libre, facile à mettre en œuvre et pratique parce qu'elle utilise systématiquement le traitement par lot. Le logiciel OCR utilisé est Cuneiform.

Logiciels nécessaires

pdfsam est dans les paquets. pdfimages fait partie du paquet poppler-utils. Utilisez python 2.6 ou plus. Pour Ubuntu ou Debian:
Code:
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)
Code:
pdfimages cropped.pdf fichier
Vous obtenez alors vos images sous cette forme: → 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)

Spoiler:
Code:
 #! /bin/bash
name=$(zenity --entry --title "Nom du fichier" --text "Nom? (sans numéro)" --entry-text=NAME)
echo "name=$name"

number=$(zenity --entry --title "Numéro du fichier" --text "Numéro à trois chiffres" --entry-text=NUMBER)
echo "number=$number"

sed '1,/<body/!d' "${name}"-"${number}".html > complet.html
sed '/<body/,/<\/body>/!d;/<body/d;s/<\/body>//' "${name}"-*.html >> complet.html
echo "</body></html>" >> complet.html

echo "Fusionné"
zenity --info --text "Fusionné"

sed -f fix.sed -i complet.html

echo "Correction fix-sed"
zenity --info --text "Correction fix-sed"


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! Le nom du dossier de travail ne doit comprendre que des caractères alphabétiques non accentués!!! Même pas des apostrophes!! Sinon,cela se traduira par 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".
http://dl.dropbox.com/u/31141350/demo%20OCR.zip

Last edited by roger64; 06-28-2012 at 05:56 AM. Reason: spoiler
roger64 is offline   Reply With Quote