Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

OCR sur une zone d'image ou de pdf

0 votes

Je voudrais réaliser la chose suivante :
sur un pdf ou une image :
1- Sélectionner une zone
2- Copier cette zone
2- lancer un ocr sur cette zone
3- Annoter la zone sur le pdf ou l'image avec un N° chronologique

Savez-vous quels seraient les meilleurs libs pour ça ? Je suis pas une star en prog, c'est pas mon métier mais ça me simplifierai tellement la vie que je veux bien m'y pencher.
En gros je voudrasi ça : https://www.youtube.com/watch?v=yOoDRs4fPBU en moins puissant.

demandé 3-Jul par JmiXIII

1 Réponse

+1 vote

Je n'ai aucune expérience dans ce champs, mais voilà le résultat d'une rapide recherche.

OCR: python-ocr

Apparemment très simple python-ocr,
elle semble faire exactement ce que tu veux.

OCR: tesseract

Je vois plusieurs solutions.

1. utiliser l'existant

C'est à dire pytesseract. Si certaines fonctions ne sont pas dispo, il faut soit attendre que le développeur s'y intéresse, soit participer.

2. faire le wrapper sois-même

Selon la code base qui est derrière, ça peut être fait plus ou moins automatiquement avec des outils comme SWIG.

Les mot-clefs ici, c'est peut et plus ou moins.

3. passer par l'exécutable

Il est possible d'appeler l'exécutable tesseract avec les options voulues
via le module subprocess, et de récupérer le résultat de la commande en quelques lignes.

def run_tesseract(cmd_args):
    return subprocess.run(["tesseract", *cmd_args], stdout=subprocess.PIPE).stdout

PDF: extraire les parties intéressantes

Comme décrit dans cet article, il faut convertir le pdf en grayscale et en format mangeable par le programme d'OCR. (explications à propos de la conversion).

Si seulement une partie du pdf est nécessaire, il est possible de la croper (éventuellement avec la ligne de commande).

Sinon, en fait, ça existe pas déjà ?

Voir le programme pdftotext pour extraire le texte d'un pdf (stack SO sympa sur le sujet, plein de réponses intéressantes).
Dans la même veine, pdftopng pour transformer un pdf en png est plutôt réussi.

Cette suite logicielle, généralement dispo par défaut sur les distrib linux, est franchement à connaître, elle fait beaucoup de choses sympa.
J'utilise très souvent pdfunite et pdfseparate.

Conclusion

Ya plein de manière de faire, et il y a possibilité de faire avec ou sans python.

répondu 22-Aou par lucas (2,108 points)

Merci Lucas pour cette foule de renseignement.
Pour le moment j'ai opté pour pytesseract et je pense que la partie ocr est gérable et avec les liens que tu m'as donné je devrais m'en sortir.

Pour le mome galère plus avec le GUI que j'écris en PyQt.
Je veux en effet pouvoir gérer une centaine d'annotation sur pdf type A3 ou A4. Reporter chacune de ces annotations dans un tableau et enfin exporter le tout dans un layout type .xls
Et et et et rendre le tout persistant dans un fichier unique par projet. Evidemment une fois qu'on ouvre le fichier on doit pouvoir modifier les annotations de façon graphique (click sur le N° ou sur le tableau)

Une fois que j'aurai fais ça je crois que j'aueai diablement progressé en python (puré mine de rien pour un non programmeur c'est pas si simple)
Bref le tout sera ici https://github.com/JmiXIII/Pyocr
Pour le moment ce n'est qu'une ébauche mais si des gens veulent prendre le relais, driver ou participer je suis naturellement preneur

...