Consecutive captures whose printed PAGE X OF Y markers advance under the same total are grouped into one multi-page PDF, with duplicate pages keeping the better read. Naming gains doc-title/party components and a scan-date fallback so nothing lands in UNSORTED. Vision LLM default switches to minicpm-v (faster, fewer false blanks on dense mono pages).
- vision/refine.py: tighten crops to the paper band (removes mat
margins and hands beside receipts) and inpaint border-connected
skin regions so fingers disappear from output
- llm/vision.py: identify documents with a local Ollama vision model
(qwen2.5vl); extracts vendor/date/total/form code and flags quality
issues (fingers, blur, glare); falls back to Tesseract when down
- pipeline: drop blank pages, dedupe consecutive captures of the same
document, record refine/LLM fields in report and export summary