7e706793fac1e6e6df0aeb898713ece8f50b8f6c
- Add AGENTS.md and project-specific Zed skills (odoo-ocr-pipeline, odoo-xml-import, local-vlm-client). - Implement Pydantic schemas for documents, invoices, review results, and VLM responses. - Add unified BaseVLMClient with Ollama implementation and llama.cpp stub. - Build pipeline stages: loader, classifier, digital_pdf/scanned_print/handwritten/mixed_unknown branches, extractor, reviewer, xml_builder. - Add CLI entry point with sidecar JSON and confidence-gated XML output. - Include prompts for classifier, OCR, extraction, and review models. - Add tests with FakeVLMClient; pytest, ruff, and mypy all pass.
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%