Python extraction texte
Résolu
Icemansuperced
Messages postés
87
Date d'inscription
Statut
Membre
Dernière intervention
-
Icemansuperced Messages postés 87 Date d'inscription Statut Membre Dernière intervention -
Icemansuperced Messages postés 87 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un problème avec un de mes scripts en Python. J'ai plusieurs PDF qui contiennent des prénoms et noms, et je tente de renommer les PDF en fonction de ces derniers. J'ai une liste des noms et prénoms censés apparaître dans les PDF pour faciliter la recherche, mais malheureusement, cela ne fonctionne pas. J'ai utilisé pytesseract et pymupdf. Auriez-vous d'autres bibliothèques à me suggérer (j'ai essayé avec pdfminer/pdfplumber, mais cela n'a pas fonctionné) ?
voici mon code:
import os import pandas as pd import fitz from PIL import Image import pytesseract pytesseract.pytesseract.tesseract_cmd = r'C:\Users\cedrik.sia\AppData\Local\Programs\Tesseract-OCR\tesseract.exe' applicants_file = r'C:\Users\cedrik.si\applicants.xlsx' applicants_df = pd.read_excel(applicants_file) applicants_df['FullName'] = applicants_df['FirstName'] + ' ' + applicants_df['LastName'] applicant_names = set(applicants_df['FullName'].tolist() + applicants_df['FirstName'].tolist() + applicants_df['LastName'].tolist()) def ocr_image(image): """ Tesseract OCR.""" text = pytesseract.image_to_string(image, lang='eng') return text def extract_text_from_first_page(pdf_path): """PyMuPDF et OCR.""" try: doc = fitz.open(pdf_path) page = doc.load_page(20) pix = page.get_pixmap() image = Image.frombytes("RGB", [pix.width, pix.height], pix.samples) text = ocr_image(image) return text except Exception as e: print(f"NA extract {pdf_path}: {e}") return "" def rename_pdf_with_applicant_name(pdf_path): try: text = extract_text_from_first_page(pdf_path) if not text.strip(): print(f"NA extract{pdf_path}") return print(f"extraction de {pdf_path}:\n{text[:10000]}...") lines = text.split('\n') applicant_name = None for line in lines: for name in applicant_names: if name in line: applicant_name = name break if applicant_name: break if applicant_name: new_pdf_path = os.path.join(os.path.dirname(pdf_path), f"{applicant_name}.pdf") os.rename(pdf_path, new_pdf_path) print(f"Rename : {pdf_path} -> {new_pdf_path}") else: print(f"Nom de l'appliquant introuvable {pdf_path}") except Exception as e: print(f"Erreur process {pdf_path}. Détails: {e}") pdf_directory = r'C:\Users\cedrik.si\OneDrive \AutomateDownload_GDBOX2' for filename in os.listdir(pdf_directory): if filename.lower().endswith('.pdf'): pdf_path = os.path.join(pdf_directory, filename) rename_pdf_with_applicant_name(pdf_path)
Windows / Edge 126.0.0.0
modération : utiliser l'icone code pour les sources. Attention le terme "pix " étant bloqué par le robot CCM, le placer dans un message supprime automatiquement tout le message.
A voir également:
- Python extraction texte
- Texte de chanson gratuit pdf - Télécharger - Vie quotidienne
- Citizen code python avis - Accueil - Outils
- Transcription audio en texte word gratuit - Guide
- Excel cellule couleur si condition texte - Guide
- Texte barré whatsapp - Guide