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.