meilleurs gestion des paragraphes

This commit is contained in:
Alex 2026-01-05 00:02:46 +01:00
parent 4284cd357e
commit 9a0935c6e6
1 changed files with 10 additions and 6 deletions

16
main.py
View File

@ -129,7 +129,7 @@ def extract_text_from_pdf(pdf_path):
text_by_page.append(text) text_by_page.append(text)
return text_by_page return text_by_page
def merge_paragraphs_across_pages(pages_text): def split_pages_in_paragraphs(pages_text):
""" """
Divise le texte en paragraphes en détectant un point suivi d'un saut de ligne ou d'un retour à la ligne. Divise le texte en paragraphes en détectant un point suivi d'un saut de ligne ou d'un retour à la ligne.
Conserve les sauts de ligne à l'intérieur des paragraphes. Conserve les sauts de ligne à l'intérieur des paragraphes.
@ -139,11 +139,15 @@ def merge_paragraphs_across_pages(pages_text):
# Concatène tout le texte # Concatène tout le texte
full_text = "\n".join(pages_text) full_text = "\n".join(pages_text)
# Divise le texte en paragraphes : un point suivi d'un saut de ligne ou d'un retour à la ligne # Remplace les sauts de ligne à l'intérieur des paragraphes par des espaces
# (pour éviter les sauts de ligne intempestifs dans un même paragraphe)
full_text = re.sub(r'(?<![.!?])\n+(?![.!?])', ' ', full_text)
# Divise le texte en paragraphes : un point suivi d'un saut de ligne
paragraphs = re.split(r'(?<=[.!?])\s*\n+', full_text.strip()) paragraphs = re.split(r'(?<=[.!?])\s*\n+', full_text.strip())
# Conserve les sauts de ligne à l'intérieur des paragraphes # Nettoie chaque paragraphe : remplace les sauts de ligne restants par des espaces
paragraphs = [p.strip() for p in paragraphs if p.strip()] paragraphs = [re.sub(r'\s+', ' ', p).strip() for p in paragraphs if p.strip()]
return paragraphs return paragraphs
@ -234,7 +238,7 @@ def create_pdf_from_results(results, output_path):
# Préserver la mise en page en convertissant les sauts de ligne # Préserver la mise en page en convertissant les sauts de ligne
formatted_text = translation.replace("\n", "<br/>") formatted_text = translation.replace("\n", "<br/>")
story.append(Paragraph(formatted_text, body_style)) story.append(Paragraph(formatted_text, body_style))
story.append(Spacer(1, 0.1*inch)) # story.append(Spacer(1, 0.1*inch))
# Infos sur le LLM # Infos sur le LLM
story.append(Spacer(1, 0.2*inch)) story.append(Spacer(1, 0.2*inch))
@ -253,7 +257,7 @@ def main():
print(f"Nombre de pages extraites : {len(pages)}") print(f"Nombre de pages extraites : {len(pages)}")
# Fusion des paragraphes qui s'étendent sur plusieurs pages # Fusion des paragraphes qui s'étendent sur plusieurs pages
paragraphs = merge_paragraphs_across_pages(pages) paragraphs = split_pages_in_paragraphs(pages)
print(f"Nombre de paragraphes complets extraits : {len(paragraphs)}") print(f"Nombre de paragraphes complets extraits : {len(paragraphs)}")
# Dictionnaire pour stocker les résultats # Dictionnaire pour stocker les résultats