Commit 37af1ff2 authored by Bernard Stephan's avatar Bernard Stephan
Browse files

Séparation des fonctions qui implémentent le processus dans p2b_functions.py...

Séparation des fonctions qui implémentent le processus dans p2b_functions.py et des constantes dans p2b_config.py.
parent ae32fa10
CMD_PDFTOTEXT = '/usr/sbin/pdftotext'
CMD_PDFTOHTML = '/usr/sbin/pdftohtml'
DEBUG_PRINT = False
PRINT_CSS = False
LEFT_THRESHOLD = 25 # In p2b_text_utils.add_lines() : the max horizontal space
# to consider aligned items to be on the same line.
HORIZONTAL_ALIGMENT_THRESHOLD = 8
VERTICAL_ALIGMENT_THRESHOLD = 14 # Avant, c'était 8
# En dessous de ces valeurs, un bloc n'est pas considéré comme
# représentatif pour définir une colonne.
# (évite qu'une légende ou un tableau définisse une colonne de texte)
MIN_LINES_IN_COLUMN_BLOCK = 3
MIN_CAR_IN_COLUMN_BLOCK = 20
FLAG_NONE = 0x0000
FLAG_FIRST_BLOCK = 0x0001
FLAG_VERTICAL = 0x0002
# SMALL_FONT = 0x0001
# BIG_FONT = 0x0002 -> Unused
# PAGE_BOTTOM = 0x0004
MANY_FONTS = 0x0010
HAS_BULLET = 0x0020
IS_DESCRIPTION = 0x0040
# DEFAULT_FONT_SIZE = 0x0040
# TITLE_SMALLER_THAN_SUBTITLE = 0x0080
# Block classifications
BL_UNDEF = 0
BL_IGNORE = -1
BL_PARAGRAPH = 1
BL_BOTTOM_PAGE = 2
BL_TOP_PAGE = 3
BL_CAPTION = 4
BL_TABLE = 5
BL_LINK = 6 # Unused
BL_DOCUMENT_TITLE = 7
BL_TITLE_1 = 8
BL_TITLE_2 = 9
BL_TITLE_3 = 10
BL_TITLE_4 = 11
BL_TITLE_5 = 12
BL_CREDITS = 13 # Unused
BL_COPYRIGHT = 14 # Unused
BL_CONTACT = 15 # Unused
BL_MISC = 16
TITLE_CLASSES = [BL_TITLE_1, BL_TITLE_2, BL_TITLE_3, BL_TITLE_4, BL_TITLE_5, ]
BLOCKS_CLASSES = ['undefined', 'paragraph',
'bottom_page', 'page_top', 'caption', 'table', 'see also',
'doc_title', 'title 1', 'title 2', 'title 3', 'title 4',
'title 5', 'credits', 'copyright', 'contact', 'misc',
'ignore']
BLOCK_PROTOTYPES = [None for dummy in range(len(BLOCKS_CLASSES))]
# Font categories are given by their threshold relative to default_font
FONT_TINY = 0
FONT_SMALL = 1
FONT_DEFAULT = 2
FONT_BIG = 3
FONT_HUGE = 4
FONT_THRESHOLDS = [ -3, -1, 0, 2, 7]
FONT_CLASSES = ['tiny', 'small', 'default', 'big', 'huge']
FONT_STYLE_REGULAR = 0
FONT_STYLE_IRREGULAR = 1
ALIGN_UNDEF = -1
ALIGN_CENTERED = 0
ALIGN_LEFT = 1
ALIGN_RIGHT = 2
ALIGN_JUSTIFIED = 3
ALIGN_CLASSES = ['centered', 'left', 'right', 'justified', 'undefined']
#### THRESHOLDS
# These are thresholds for considering a block is shurely in a class
## "Normal" (default) paragrph
PARAGRAH_LINE_SIZE = 40 # At least PARAGRAH_LINE_SIZE characters
# Si la proportion de caractères restants après suppression des
# NUMBERING_REGEX caractères, alors on considère qu'il n'y a que des nombres.
# (utilisé pour l'identification de tableaux)
NUMBERING_THRESHOLD = 0.3
# Below the TABLE_LENGTH value,
TABLE_LINE_SIZE = 25
TITLE_SIZE_MAX = 60 # Max size for titles in 1st phase
TITLE_SIZE_LIMIT = 140 # At the end, all title>TITLE_SIZE_LIMIT are marked <p>
TITLE_MIN_CHAR = 2 # To avoid “styled” bullet : we consider that a font never
# used for more than TITLE_MIN_CHAR characters per line
# is a kind of text styling and will take the next line's font
SIMILARITY_THRESHOLD = 1.0
# Celle là est un peu compliquée : Pour détecter la structure, on compte
# le nombre de successions d'un changement de police de caractères vers
# un autre (ex : la fonte 3 succède *2* fois à la fonte 8).
# Si ce nombre est trop peu élevé (<= NB_SUCCESSION_FOR_SAME) alors
# on considère que 8 n'est pas un titre de 3, et qu'ils sont au même niveau.
# Sinon, on considère que 8 est un niveau au-dessus dans la hiérarchie des
# titres, sous-titres, …
NB_SUCCESSION_FOR_SAME = 0
#### Regex
INDICES_EXPOSANTS_USUELS = [
'er|ère|ere', # 1er, 1ère, …
'nde?', # 2nd
'i?[eè]me', # 3ème, 4ieme, …
'°',
]
NUMBERING_REGEX = r'[0-9,\.\-\+\(\)%°±~ ]'
PUNCTUATION_REGEX = r'[\.\;\,\?\!]'
CAPTION_REGEX = ['cr[ée]dit photo', 'photo ?:']
LINK_REGEX = ['https?://', 'clique[rz]', '\.gouv\.fr']
CREDITS_REGEX = ['R[ée]daction ?:', 'R[ée]dacteurs? ?:', 'R[ée]dactrices? ?:',
'cr[ée]dits photos', # Au pluriel ce coup-ci
'Animation du réseau', 'Animateurs? ?:', 'Animatrices? ?:',
'Directrices? de publication', 'Directeurs? de publication',
'[ée]dit[ée] sous la responsabilit[ée]', 'action (co-)?pilot[ée]e par',
'cr[eé]dits issus de la redevance pour pollutions diffuses',
]
COPYRIGHT_REGEX = ['Reproduction int[ée]grale', 'Reproduction partielle']
CONTACT_REGEX = [r"([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)"]
This diff is collapsed.
......@@ -35,7 +35,5 @@ def levenshtein(s, t):
dist[row][col] = min(dist[row-1][col] + 1, # deletion
dist[row][col-1] + 1, # insertion
dist[row-1][col-1] + cost) # substitution
#for r in range(rows):
# print(dist[r])
return dist[row][col]
This diff is collapsed.
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