Skip to content

Commit

Permalink
feat: marquer les elements de sequence aussi
Browse files Browse the repository at this point in the history
  • Loading branch information
dhdaines committed Jun 6, 2024
1 parent 9cd65da commit 33f7231
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 11 deletions.
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@ annoter, par exemple:
--pages 1,2,3

Dans le PDF, pour le moment, des rectangles colorés sont utiliser pour
représenter les différents éléments annotés et aider à répérer les
erreurs. Notamment:
représenter les blocs annotés et aider à répérer les erreurs.
Notamment:

- Les chapitres et annexes sont en rouge
- Les sections et articles sont en rose (plus foncé plus le type
Expand All @@ -77,6 +77,9 @@ erreurs. Notamment:
- Les en-têtes et pieds de page sont en jaune-vert-couleur-de-bile
- Tout le reste est en noir (alinéas, tableaux, figures)

Pour les éléments de séquence (il y a juste les titres et les numéros)
ceux-ci sont indiqués par un remplissage vert clair transparent.

Avec un logiciel de feuilles de calcul dont LibreOffice ou Excel, on
peut alors modifier `1314-page1.csv` pour corriger la segmentation.
Il est *très important* de spécifier ces paramètres lorsqu'on ouvre et
Expand Down
2 changes: 1 addition & 1 deletion alexi/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import sys
from pathlib import Path

from . import download, extract, annotate
from . import annotate, download, extract
from .analyse import Analyseur, Bloc, merge_overlaps
from .convert import Converteur, write_csv
from .format import format_html
Expand Down
32 changes: 24 additions & 8 deletions alexi/annotate.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,10 @@

from alexi.analyse import group_iob
from alexi.convert import Converteur, write_csv
from alexi.label import Identificateur, DEFAULT_MODEL as DEFAULT_LABEL_MODEL
from alexi.segment import (
Segmenteur,
DEFAULT_MODEL as DEFAULT_SEGMENT_MODEL,
DEFAULT_MODEL_NOSTRUCT,
)
from alexi.label import DEFAULT_MODEL as DEFAULT_LABEL_MODEL
from alexi.label import Identificateur
from alexi.segment import DEFAULT_MODEL as DEFAULT_SEGMENT_MODEL
from alexi.segment import DEFAULT_MODEL_NOSTRUCT, Segmenteur

LOGGER = logging.getLogger(Path(__file__).stem)

Expand Down Expand Up @@ -67,9 +65,8 @@ def annotate_pdf(
outpage += 1
while len(pdf) > len(pages):
pdf.del_page(outpage)
blocs = group_iob(iob)
for page, (page_number, group) in zip(
pdf, itertools.groupby(blocs, attrgetter("page_number"))
pdf, itertools.groupby(group_iob(iob), attrgetter("page_number"))
):
page_height = page.get_height()
LOGGER.info("page %d", page_number)
Expand Down Expand Up @@ -99,6 +96,25 @@ def annotate_pdf(
pdfium_c.FPDFPageObj_SetStrokeWidth(path, 1)
pdfium_c.FPDFPage_InsertObject(page, path)
pdfium_c.FPDFPage_GenerateContent(page)
for page, (page_number, group) in zip(
pdf, itertools.groupby(group_iob(iob, "sequence"), attrgetter("page_number"))
):
page_height = page.get_height()
LOGGER.info("page %d", page_number)
for bloc in group:
x0, top, x1, bottom = bloc.bbox
width = x1 - x0
height = bottom - top
y = page_height - bottom
LOGGER.info("element %s à %d, %d, %d, %d", bloc.type, x0, y, width, height)
path = pdfium_c.FPDFPageObj_CreateNewRect(
x0 - 1, y - 1, width + 2, height + 2
)
pdfium_c.FPDFPath_SetDrawMode(path, pdfium_c.FPDF_FILLMODE_ALTERNATE, False)
pdfium_c.FPDFPageObj_SetFillColor(path, 50, 200, 50, 50)
pdfium_c.FPDFPageObj_SetStrokeWidth(path, 1)
pdfium_c.FPDFPage_InsertObject(page, path)
pdfium_c.FPDFPage_GenerateContent(page)
pdf.save(outpath)


Expand Down

0 comments on commit 33f7231

Please sign in to comment.