Image-to-Text
Transformers
Joblib
Persian
English
document-ai
ocr
invoice
persian
enterprise
aria-ai
Instructions to use alirezaaminzadeh/docflow-invoice-parser-fa with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use alirezaaminzadeh/docflow-invoice-parser-fa with Transformers:
# Use a pipeline as a high-level helper # Warning: Pipeline type "image-to-text" is no longer supported in transformers v5. # You must load the model directly (see below) or downgrade to v4.x with: # 'pip install "transformers<5.0.0' from transformers import pipeline pipe = pipeline("image-to-text", model="alirezaaminzadeh/docflow-invoice-parser-fa")# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("alirezaaminzadeh/docflow-invoice-parser-fa", device_map="auto") - Notebooks
- Google Colab
- Kaggle
| """Persian NER enrichment for invoice field extraction.""" | |
| from __future__ import annotations | |
| import logging | |
| import re | |
| from functools import lru_cache | |
| logger = logging.getLogger(__name__) | |
| _ner_pipeline = None | |
| def _get_ner(): | |
| global _ner_pipeline | |
| if _ner_pipeline is not None: | |
| return _ner_pipeline | |
| try: | |
| from transformers import pipeline | |
| logger.info("Loading Persian NER model (HooshvareLab/bert-fa-zwnj-base-ner)...") | |
| _ner_pipeline = pipeline( | |
| "ner", | |
| model="HooshvareLab/bert-fa-zwnj-base-ner", | |
| aggregation_strategy="simple", | |
| device=-1, | |
| ) | |
| return _ner_pipeline | |
| except Exception as exc: | |
| logger.warning("NER model unavailable: %s", exc) | |
| return None | |
| def extract_organizations(text: str) -> list[str]: | |
| ner = _get_ner() | |
| if not ner: | |
| return [] | |
| try: | |
| entities = ner(text[:512]) | |
| return [e["word"].replace("##", "") for e in entities if e.get("entity_group") in ("B-ORG", "I-ORG", "ORG")] | |
| except Exception: | |
| return [] | |
| def extract_persons(text: str) -> list[str]: | |
| ner = _get_ner() | |
| if not ner: | |
| return [] | |
| try: | |
| entities = ner(text[:512]) | |
| return [e["word"].replace("##", "") for e in entities if e.get("entity_group") in ("B-PER", "I-PER", "PER")] | |
| except Exception: | |
| return [] | |
| def find_tax_ids(text: str) -> list[str]: | |
| normalized = text.translate(str.maketrans("۰۱۲۳۴۵۶۷۸۹", "0123456789")) | |
| return re.findall(r"(?<!\d)(\d{10,14})(?!\d)", normalized) | |