File size: 1,598 Bytes
4dce182 9d054d4 4dce182 9d054d4 4dce182 9d054d4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | """Label sets shared by the synthetic data generator, the extraction model and JSON assembly."""
FIELD_LABELS = [
"other", # decorative / irrelevant text
"key", # a label such as "Total:" or "Invoice No." whose value is a separate segment
"merchant_name", "merchant_address", "merchant_phone", "merchant_tax_id",
"customer", # bill-to block on invoices
"invoice_number", "date", "due_date", "time",
"item_desc", "item_qty", "item_unit_price", "item_amount",
"subtotal", "tax", "discount", "total", "amount_paid", "change",
"heading", "paragraph", "list_item", "table_cell",
"formula", # display maths: detected and skipped (not transcribed)
]
LABEL_ID = {n: i for i, n in enumerate(FIELD_LABELS)}
DOC_TYPES = ["receipt", "invoice", "general"]
DOC_ID = {n: i for i, n in enumerate(DOC_TYPES)}
# Pairwise relations between segments.
# same_row: both segments belong to the same line item / table row (symmetric)
# key_value: segment i is the key whose value is segment j (directed)
# same_block: both segments belong to the same layout block (paragraph, list item, table, caption...)
# New labels and relations are appended so older checkpoints load into the matching rows (train --init).
REL_TYPES = ["same_row", "key_value", "same_block"]
MONEY_FIELDS = {"item_unit_price", "item_amount", "subtotal", "tax", "discount", "total", "amount_paid", "change"}
ITEM_FIELDS = {"item_desc", "item_qty", "item_unit_price", "item_amount"}
STRUCTURE_LABELS = {"heading", "paragraph", "list_item", "table_cell", "formula"}
|