OCR à partir de PDF en Python

1. 1. introduction

J'ai imité les merveilleux ancêtres et j'ai écrit le code OCR à partir de PDF en Python. Et utilise. Ce que je fais, c'est convertir le PDF en jpg avec poppler, puis le transcrire dans un fichier txt avec Tesseract OCR.

Je suis un débutant, donc je serais heureux si vous pouviez signaler quelque chose d'étrange dans le code. J'ai également évoqué de nombreux sites que je n'ai pas cités. Merci beaucoup.

2. Aperçu

En référence à ce site, la structure des dossiers est la suivante. Comment convertir un PDF en fichier image (JPEG, PNG) avec Python

Dossier parent Dossier enfant
\ Courant ¥image_file
¥pdf_file
¥poppler
¥txt_file
import os
import pathlib
from pathlib import Path
from pdf2image import convert_from_path
from PIL import Image
import sys
import pyocr
import pyocr.builders
import pathlib
import glob


def cleanup():
    #Répertoire contenant le fichier img à supprimer
    image_dir = pathlib.Path('./image_file')
    #Obtenez une liste de fichiers jpeg dans un répertoire avec glob
    jpg_path = list(image_dir.glob('**/*.jpeg'))

    #Répertoire contenant le fichier txt à supprimer
    txt_dir = pathlib.Path('./txt_file')
    #Obtenez une liste de fichiers txt dans un répertoire avec glob
    txt_path = list(txt_dir.glob('**/*.txt'))

    if jpg_path == []:  #Pause si la liste est vide
        pass
    else:
        for i in jpg_path:
            os.remove(i)

    if txt_path == []:  #Pause si la liste est vide
        pass
    else:
        for i in txt_path:
            os.remove(i)
def pdf_to_image():
    # poppler/Ajouter un bac à la variable d'environnement Path(Temporairement)
    # Path("__file__").parent.resolve()donc.Renvoie le chemin absolu du dossier parent du fichier py
    poppler_dir = pathlib.Path("__file__").parent.resolve() / "poppler/bin"
    #pathsep est un délimiteur lors de l'ajout aux variables d'environnement;
    os.environ["PATH"] += os.pathsep + str(poppler_dir)

    #Chemin du fichier PDF
    pdf_dir = pathlib.Path('./pdf_file')
    #Obtenez une liste de fichiers pdf dans un répertoire avec glob
    pdf_path = list(pdf_dir.glob('**/*.pdf'))

    # PDF ->Convertir en image(200dpi)
    pages = convert_from_path(str(pdf_path[0]))

    #Enregistrer les fichiers image page par page
    image_dir = pathlib.Path("./image_file")
    for i, page in enumerate(pages):  #Obtenez le nombre de pages de pages avec la fonction énumérer
        # .Afficher la fin du chemin avec la tige (pathlib)
        file_name = pdf_path[0].stem + "_{:02d}".format(i + 1) + ".jpeg "
        image_path = image_dir / file_name
        #Enregistrer au format JPEG
        page.save(str(image_path), "JPEG")
def image_ocr():

    # tesseract-Passer le chemin OCR
    tessera_path = "C:\***\Tesseract-OCR"
    #pathsep est un délimiteur lors de l'ajout aux variables d'environnement;
    os.environ["PATH"] += os.pathsep + str(tessera_path)

    tools = pyocr.get_available_tools()
    if len(tools) == 0:
        print("No OCR tool found")
        sys.exit(1)  #L'argument 1 renvoie 1 dans l'état final

    tool = tools[0]

    #Répertoire avec les fichiers cibles ocr
    image_dir = pathlib.Path('./image_file')
    #Obtenez une liste de fichiers jpeg dans un répertoire avec glob
    jpg_path = list(image_dir.glob('**/*.jpeg'))

    for i in jpg_path:
        #Convertir le contenu ocr en la variable txt
        txt = tool.image_to_string(
        Image.open(str(i)),
        lang="jpn",
        builder=pyocr.builders.TextBuilder(tesseract_layout=6)
        )
        #Txt variable txt_Enregistrer en tant que fichier txt dans le répertoire de fichiers
        with open('./txt_file/' + str(i.stem) + '.txt', mode='wt') as t:
            t.write(txt)

Recommended Posts

OCR à partir de PDF en Python
Pixelliser un PDF avec Python
Convertir Markdown en PDF en Python
Obtenir des données de Quandl en Python
Extraire du texte d'images avec Python
Extraire des chaînes de fichiers avec Python
Quadtree en Python --2
Python en optimisation
CURL en Python
Géocodage en python
SendKeys en Python
Obtenez des taux de change à partir des taux de change ouverts en Python
Méta-analyse en Python
Unittest en Python
Relancé de "pas d'accès Internet" en Python
Empêcher le double lancement de cron en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
sql à sql
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
Télécharger des images à partir de la liste d'URL en Python
Obtenez le niveau de la batterie de SwitchBot avec Python
MeCab de Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
Générer une classe à partir d'une chaîne en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Générer un langage C à partir d'une expression S avec Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Convertir de Markdown en HTML en Python
Obtenez la probabilité de précipitation de XML avec Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
Lire des caractères dans des images avec Python OCR
LiNGAM en Python
Aplatir en Python
Obtenir l'historique des métriques de MLflow en Python
Aplatir en python
Obtenez des données de séries chronologiques de k-db.com avec Python