|
|
|
@ -129,7 +129,7 @@ def extract_text_from_pdf(pdf_path): |
|
|
|
text_by_page.append(text) |
|
|
|
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. |
|
|
|
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 |
|
|
|
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()) |
|
|
|
|
|
|
|
# Conserve les sauts de ligne à l'intérieur des paragraphes |
|
|
|
paragraphs = [p.strip() for p in paragraphs if p.strip()] |
|
|
|
# Nettoie chaque paragraphe : remplace les sauts de ligne restants par des espaces |
|
|
|
paragraphs = [re.sub(r'\s+', ' ', p).strip() for p in paragraphs if p.strip()] |
|
|
|
|
|
|
|
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 |
|
|
|
formatted_text = translation.replace("\n", "<br/>") |
|
|
|
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 |
|
|
|
story.append(Spacer(1, 0.2*inch)) |
|
|
|
@ -253,7 +257,7 @@ def main(): |
|
|
|
print(f"Nombre de pages extraites : {len(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)}") |
|
|
|
|
|
|
|
# Dictionnaire pour stocker les résultats |
|
|
|
|