main
- Updates AGENTS.md to clarify that production must keep invoice data on the same host as the model runtime, while shared LAN endpoints are acceptable for integration testing and staging. - Bumps pyproject.toml version to 0.1.0-dev and adds development status classifiers. - Adds CHANGELOG.md with Unreleased and 0.1.0 entries.
odoo_ocr
Local-first invoice OCR pipeline that reads scanned, printed, handwritten, and native-PDF invoices and produces Odoo Enterprise-ready XML.
Quick start
-
Install dependencies:
uv sync --all-extras # or pip install -e ".[dev]" -
Configure
config.yamlor set environment variables:export OLLAMA_BASE_URL="http://100.103.83.12:11435" -
Run the pipeline:
odoo-ocr process /path/to/invoices --output ./out/
Architecture
Input File
→ Classifier (heuristic + small VLM)
→ Branch: digital_pdf → text/layout extraction
→ Branch: scanned_print → preprocess → VLM OCR
→ Branch: handwritten → preprocess → GLM-OCR
→ Branch: mixed_unknown → preprocess → ensemble OCR
→ Structured Extraction VLM
→ Review VLM (image vs extracted JSON)
→ Confidence check
→ XML Builder
→ Odoo XML + sidecar JSON
Project-specific agent skills
Agent skills are in .agents/skills/:
odoo-ocr-pipeline— classifier, branches, extraction, review.odoo-xml-import— generating and validating Odoo XML.local-vlm-client— Ollama/llama.cpp VLM clients and prompts.
Description
Languages
Python
99.5%
Shell
0.5%