meilleurs gestion des paragraphes
This commit is contained in:
parent
4284cd357e
commit
9a0935c6e6
16
main.py
16
main.py
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue