fegger da37e91c86 Add CLI orchestration with confidence-gated XML output
- Refactors process_single into inner pipeline with guaranteed client close.

- Runs classifier -> OCR branch -> extraction -> review -> XML/sidecar.

- Uses review-corrected invoice when available.

- Confidence >= 0.75 produces XML; < 0.90 adds a human-review comment.

- Adds end-to-end CLI tests covering confidence bands, corrections, and batch mode.
2026-08-21 16:44:35 +02:00

odoo_ocr

Local-first invoice OCR pipeline that reads scanned, printed, handwritten, and native-PDF invoices and produces Odoo Enterprise-ready XML.

Quick start

  1. Install dependencies:

    uv sync --all-extras
    # or
    pip install -e ".[dev]"
    
  2. Configure config.yaml or set environment variables:

    export OLLAMA_BASE_URL="http://100.103.83.12:11435"
    
  3. 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.
S
Description
No description provided
Readme 157 KiB
Languages
Python 99.5%
Shell 0.5%