Commit 6a8fb2b9 authored by Roussey Catherine's avatar Roussey Catherine
Browse files

Update README.md

parent 5be72023
......@@ -259,8 +259,7 @@ les numéros de pages soient considérés comme des pieds de page.
Tant que des lignes sont détectées comme étant des pieds de page,
on teste la ligne précédente, et ainsi de suite.
Les lignes détectées comme étant des bas de page ont la valeur BL_BOTTOM_PAGE dans leur attribut class
et seront ignorées dans la suite de l'algorithme.
Les lignes détectées comme étant des bas de page ont la valeur BL_BOTTOM_PAGE dans leur attribut class.
#### Détection des en-tête
......@@ -274,8 +273,7 @@ Si le document a plus de deux pages, on détecte d'abord s'il existe des en-tete
et ensuite on teste si il exsite une en tete avec le meme contenu dans la première page.
Les lignes détectées comme étant des en tete ont la valeur BL_TOP_PAGE dans leur attribut class
et seront ignorées dans la suite de l'algorithme.
Les lignes détectées comme étant des en tete ont la valeur BL_TOP_PAGE dans leur attribut class.
#### Attribution de fontes aux blocs
......@@ -354,25 +352,28 @@ Il devrait éborder sur les deux colonnes mais il est de fait entièrement conte
##### Parcours des blocs dans le sens de lecture
Une liste ordonnée L de blocs est créée, dans laquelle on met les en-têtes
dans l'ordre donné par pdftotext. On y mettra aussi, à la fin de l'algorithme,
les pieds de page. Dans l'intervalle, les pieds de page sont ignorés.
l'objectif est d'ordonner les blocs d'une meme page dans leur sens de lecture,
c'est à dire de haut en bas et de gauche à droite.
Au fur et à mesure que les blocs sont ajoutés dans la liste, ils sont retirés
Une nouvelle liste ordonnée L de blocs est créée pour une page donnée.
Les en-têtes sont tout d'abord insérée dans la liste L
dans l'ordre donné par pdftotext.
Au fur et à mesure que les blocs sont ajoutés dans la liste L, ils sont retirés
des blocs à parcourir. L'algorithme effectue une boucle jusqu'à épuisement
des blocs à parcourir.
On définit un intervalle de colonnes à traiter, initialisé à la première
On définit une zone rectangulaire à traiter inclue dans la page. Cette zone est initialisée à la première
colonne.
La boucle principale de l'algorithme effectue les tâches suivantes :
- recherche du bloc B1 le plus haut dans l'intervalle de colonnes ;
- si on n'en trouve pas, on élargit l'intervalle vers la droite et on relance
- recherche du bloc B1 le plus haut dans la zone ;
- si on n'en trouve pas, on élargit la zone vers la droite et on relance
une recherche,
- si on n'en trouve pas et que l'intervalle comprend la dernière colonne,
on élargit l'intervalle (à gauche) à l'ensemble des colonnes.
- Le cas où l'on ne trouve pas de bloc et que l'intervalle comprend l'ensemble
- si on n'en trouve pas et que l'la zone comprend la dernière colonne,
on élargit la zone (à gauche) à l'ensemble des colonnes.
- Le cas où l'on ne trouve pas de bloc et que la zone comprend l'ensemble
des colonnes ne se produit jamais, car ce cas signifie qu'on a parcouru
tous les blocs. On le teste néanmoins et on génère une erreur (qui n'a
jamais été observée).
......@@ -381,25 +382,26 @@ La boucle principale de l'algorithme effectue les tâches suivantes :
sélectionne B2, le bloc le plus à gauche ;
- étant donné B2, trois cas sont considérés :
- il existe un bloc non traité qui commence plus haut dans une colonne
à gauche de l'intervalle de colonnes à traiter. Ceci se produit quand
à gauche de la zone à traiter. Ceci se produit quand
un titre centré par exemple, ou un bloc situé à droite (à côté d'une
photo par exemple) vient d'être ajouté à la liste L.
Dans ce cas, on réinitialise l'intervalle de colonnes à l'ensemble des
Dans ce cas, on réinitialise la zone à l'ensemble des
colonnes (ce qui aura pour effet de traiter en priorité les blocs
de gauche).
- la limite droite du bloc B2 est au delà de la borne droite de l'intervalle
de colonnes. C'est par exemple le cas d'un titre (sur toute la largeur
- l'arrete droite du bloc B2 est au delà de l'arrete droite de la zone.
C'est par exemple le cas d'un titre (sur toute la largeur
de la page) qui sépare des sections écrites en colonnes. Dans ce cas,
la colonne gauche de B2 est incrémentée (ce texte sera lu après avoir lu
la colonne suivante) ainsi que les bornes de l'intervalle de colonnes
la colonne suivante) ainsi que les bornes de la zone
à traiter.
- Dans le troisième cas, B2 est ajouté à L et l'intervalle de colonnes
- Dans le troisième cas, B2 est ajouté à L et la zone
est ajusté à celui de B2 (pour que les blocs situés dans la même colonne
que B2 soient parcourus avant ceux, plus hauts, de la colonne suivante).
Une fois cette boucle terminée, L contient la liste des blocs dans un ordre de
lecture estimé convenable.
La liste L est enrichie des blocs marqués comme pieds de page.
#### Reconstitution de la structure du document
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment