Bentham commited on
Commit
2b4e713
·
verified ·
1 Parent(s): de8d022

réintégration du prompt

Browse files
Files changed (1) hide show
  1. main.py +41 -15
main.py CHANGED
@@ -147,18 +147,18 @@ async def convert_to_accessible_html(input_filename, ext, base_filename, image_c
147
  if ext == '.pdf':
148
  # PDF -> HTML avec pages
149
  html_content = pdf_to_html(input_filename)
150
- # Pour le PDF, on a déjà des <!--PAGE_X--> par page, pas besoin d'en ajouter toutes les 15 lignes
151
  elif ext in ['.ppt', '.pptx']:
152
  # PPT/PPTX -> texte -> HTML minimal
153
  text = convert_ppt_to_text(input_filename)
154
  html_content = text_to_html(text)
155
- # Ajouter les <!--PAGE_X--> toutes les 15 lignes pour ce format
156
- html_content = insert_page_comments_every_15_paragraphs(html_content)
157
  elif ext == '.doc':
158
  # DOC -> texte (textract) -> HTML minimal
159
  text = convert_doc_to_text(input_filename)
160
  html_content = text_to_html(text)
161
- html_content = insert_page_comments_every_15_paragraphs(html_content)
162
  elif ext in ['.html', '.htm']:
163
  with open(input_filename, 'r', encoding='utf-8') as f:
164
  html_content = f.read()
@@ -167,14 +167,14 @@ async def convert_to_accessible_html(input_filename, ext, base_filename, image_c
167
  html_content = doc.summary()
168
  except Exception as e:
169
  logging.error(f"Erreur lors du nettoyage HTML avec readability-lxml : {str(e)}")
170
- # Ajouter les <!--PAGE_X--> toutes les 15 lignes
171
- html_content = insert_page_comments_every_15_paragraphs(html_content)
172
  else:
173
  # Formats gérés par Pandoc
174
  input_format = get_pandoc_format(ext)
175
  html_content = convert_with_pandoc(input_filename, input_format)
176
- # Ajouter les <!--PAGE_X--> toutes les 15 lignes
177
- html_content = insert_page_comments_every_15_paragraphs(html_content)
178
 
179
  # Nettoyage
180
  cleaned_html = await clean_html_content(html_content, image_counter, images_data)
@@ -214,14 +214,14 @@ async def convert_to_accessible_html(input_filename, ext, base_filename, image_c
214
  logging.error(f"Erreur lors de la conversion : {str(e)}")
215
  return None
216
 
217
- def insert_page_comments_every_15_paragraphs(html_content: str) -> str:
218
- # Insère un commentaire <!--PAGE_X--> toutes les 15 balises <p>
219
  soup = BeautifulSoup(html_content, 'html.parser')
220
  paragraphs = soup.find_all('p')
221
  page_number = 1
222
  count = 0
223
  for i, p in enumerate(paragraphs, start=1):
224
- if i % 15 == 1: # Avant le premier <p> d'un "bloc"
225
  comment = soup.new_string(f"<!--PAGE_{page_number}-->")
226
  p.insert_before(comment)
227
  page_number += 1
@@ -430,10 +430,36 @@ async def get_image_description(base64_image: str) -> str:
430
 
431
  async def rewrite_html_accessible(html_content: str) -> str:
432
  prompt = (
433
- "Je vais te donner un fichier HTML, et je voudrais que tu le réécrives pour permettre l'accessibilité "
434
- toutes les formes de handicap, tout en **préservant strictement l'ordre du contenu original**.\n"
435
- "Commence à analyser le plan du document... (règles définies dans le code d'origine)...\n"
436
- "Voici le fichier HTML d'origine :\n" + html_content
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
437
  )
438
 
439
  try:
 
147
  if ext == '.pdf':
148
  # PDF -> HTML avec pages
149
  html_content = pdf_to_html(input_filename)
150
+ # Pour le PDF, on a déjà des <!--PAGE_X--> par page, pas besoin d'en ajouter toutes les 20 lignes
151
  elif ext in ['.ppt', '.pptx']:
152
  # PPT/PPTX -> texte -> HTML minimal
153
  text = convert_ppt_to_text(input_filename)
154
  html_content = text_to_html(text)
155
+ # Ajouter les <!--PAGE_X--> toutes les 20 lignes pour ce format
156
+ html_content = insert_page_comments_every_20_paragraphs(html_content)
157
  elif ext == '.doc':
158
  # DOC -> texte (textract) -> HTML minimal
159
  text = convert_doc_to_text(input_filename)
160
  html_content = text_to_html(text)
161
+ html_content = insert_page_comments_every_20_paragraphs(html_content)
162
  elif ext in ['.html', '.htm']:
163
  with open(input_filename, 'r', encoding='utf-8') as f:
164
  html_content = f.read()
 
167
  html_content = doc.summary()
168
  except Exception as e:
169
  logging.error(f"Erreur lors du nettoyage HTML avec readability-lxml : {str(e)}")
170
+ # Ajouter les <!--PAGE_X--> toutes les 20 lignes
171
+ html_content = insert_page_comments_every_20_paragraphs(html_content)
172
  else:
173
  # Formats gérés par Pandoc
174
  input_format = get_pandoc_format(ext)
175
  html_content = convert_with_pandoc(input_filename, input_format)
176
+ # Ajouter les <!--PAGE_X--> toutes les 20 lignes
177
+ html_content = insert_page_comments_every_20_paragraphs(html_content)
178
 
179
  # Nettoyage
180
  cleaned_html = await clean_html_content(html_content, image_counter, images_data)
 
214
  logging.error(f"Erreur lors de la conversion : {str(e)}")
215
  return None
216
 
217
+ def insert_page_comments_every_20_paragraphs(html_content: str) -> str:
218
+ # Insère un commentaire <!--PAGE_X--> toutes les 20 balises <p>
219
  soup = BeautifulSoup(html_content, 'html.parser')
220
  paragraphs = soup.find_all('p')
221
  page_number = 1
222
  count = 0
223
  for i, p in enumerate(paragraphs, start=1):
224
+ if i % 20 == 1: # Avant le premier <p> d'un "bloc"
225
  comment = soup.new_string(f"<!--PAGE_{page_number}-->")
226
  p.insert_before(comment)
227
  page_number += 1
 
430
 
431
  async def rewrite_html_accessible(html_content: str) -> str:
432
  prompt = (
433
+ "Je vais te donner un fichier HTML, et je voudrais que tu le réécrives pour permettre l'accessibilité à toutes les formes de handicap, tout en **préservant strictement l'ordre du contenu original**.\n"
434
+ "Commence à analyser le plan du document. Il faut d'abord identifier les titres et comprendre leur logique :\n"
435
+ "- A priori, les titres qui sont préfixés par une écriture romaine (I, II, III), "
436
+ "par un nombre (1, 2, 3) ou par une lettre (a, b, c, ou bien A, B, C) doivent être de même niveau."
437
+ "Idem pour les titres rédigés en majuscules.\n"
438
+ "- Quand une expression très courte qui ne ressemble pas syntaxiquement à une phrase est présentée sur une seule ligne,"
439
+ "il y a des chances qu'il s'agisse d'un titre : dans ce cas (et si c'est pertinent) traite-la comme telle.\n"
440
+ "- Au contraire, **une phrase longue ne doit JAMAIS être traitée comme un titre**,"
441
+ "même quand elle est précédée par un numéro ou une lettre."
442
+ "De même, ne traite jamais comme un titre un ensemble de plusieurs phrases. Je repète : les balises <h1>, <h2>, etc., ne sont destinées qu'à encadrer des expressions relativement courtes, et rien d'autre.\n\n"
443
+ "Tu ne dois **rien réorganiser**, **ne rien supprimer** et **ne rien ajouter** en termes de structure ou de contenu. "
444
+ "Ton intervention doit se faire exclusivement sur la **forme** du document : le contenu doit être **intégralement préservé dans le même ordre**, jusqu'à la fin. "
445
+ "Laisse la balise <head> vide.\n"
446
+ "IMPORTANT : Tu dois **respecter scrupuleusement l'ordre indiqué par les commentaires HTML de la forme <!--PAGE_X-->,** s'ils existent. On doit avoir <!--PAGE_1--> [...] <!--PAGE_2--> [...] <!--PAGE_3--> [...], et ainsi de suite, dans l'ordre exact et sans en oublier un seul. C'est très important ! Ces marqueurs te permettent de t'assurer que la page est bien retranscrite dans le bon ordre. Ne déplace, ne supprime, et ne modifie pas ces commentaires.\n"
447
+ "Attention, ce document est peut-être issu d'un PDF ou d'un DOCX. Il faut donc être attentif :\n"
448
+ "- Aux balises <p> qui suivent immédiatement les marqueurs <!--PAGE_X--> : il peut s'agir de headers. Pour le savoir, il faut les comparer entre eux pour savoir s'ils sont à peu près similaires.\n"
449
+ "- Aux balises <p> qui précèdent immédiatement les marqueurs <!--PAGE_X--> : il peut s'agir de footers. De même, il faut les comparer entre eux pour savoir s'ils sont à peu près similaires.\n"
450
+ "Dans tous les cas, il faut supprimer les balises <p> correspondant aux headers et les footers identifiés. Attention, ces suppressions ne doivent pas affecter les autres éléments.\n"
451
+ "S'il y a des retours à la ligne injustifiés, il faut rétablir l'intégrité des phrases, et constituer de véritables paragraphes complets. L'ensemble du code doit être inclus entre des balises <html></html>\n"
452
+ "Tu donneras la totalité du HTML réécrit, et rien d'autre, ni avant ni après. "
453
+ "Ne résume jamais les informations, ne réorganise pas le contenu et ne supprime aucune section.\n\n"
454
+ "Voici tout d'abord les règles à suivre pour avoir un document accessible :\n\n"
455
+ "1. Limiter l'italique et les soulignements.\n"
456
+ "2. S'il y a des tableaux, insérer un tiret dans les cellules ne contenant pas d’information, et associer une légende aux tableaux.\n"
457
+ "3. Pour les titres, utilise absolument les balises h1, h2, h3, h4, h5 et h6. Utilise la balise h1 pour le titre qui a le plus grand niveau.\n\n"
458
+ "On évite les balises <ul> et <li>\n"
459
+ "Encore une fois, fais bien attention à reproduire fidèlement l'ordre des marqueurs <!--PAGE_X-->, dans l'ordre croissant des X : c'est ta tâche principale. Recompte régulièrement les X des PAGE_X pour être sûr qu'il n'en manque aucun.\n"
460
+ "N'oublie pas qu'on ne doit avoir AUCUN header et AUCUN footer, c'est très important.\n"
461
+ "Voici maintenant le fichier HTML d'origine :\n"
462
+ + html_content
463
  )
464
 
465
  try: