[ADD] ai_document_extraction - #96
Conversation
|
Updated the documentation (commit |
|
Hi @etobella and @angelmoya 👋 Just a friendly ping — when you have a moment, could you take a look at this PR whenever convenient? All CI checks are green (pre-commit, Odoo/OCB tests, codecov, runboat). Happy to adjust anything based on your feedback. Thanks so much for your time and all the maintenance work! |
|
Interesting, however, why don't you use https://github.com/OCA/ai/tree/18.0/ai_connection ? This way we can reuse code and so on. |
3f64a21 to
0c759e6
Compare
|
Hi @etobella, thanks for the suggestion! Following up on your feedback: We ported
All 85 tests pass across |
|
Quick update on the final UX since my previous comment (relevant for review):
All green: 78 local tests, CI (pre-commit, Odoo/OCB, codecov, runboat). |
|
Hi @etobella 👋 gentle follow-up — whenever you have a moment. Where things stand: per your suggestion, This module is the foundation of a broader AI-integration effort we're preparing: several more OCA modules will consume the same connection layer, with new features arriving as separate PRs and branches. Your review direction here would be especially valuable — the sooner the design is aligned, the easier those follow-ups will be to review. Happy to adjust anything. Thanks for your time! |
|
Hi @etobella 👋 Per your suggestion, ai_connection/ai_tool are now in #100 and this PR has been refactored to use connection._run(...) (provider config on ai.connection, settings moved to Technical > AI). All 85 tests green. #100 is the blocker for a clean rebase here - once it is merged I will rebase this one to remove the duplicated commits. Happy to adjust anything else in the meantime. Thanks! |
…ted files, external deps) - Drop cv2 from external_dependencies.python (not a valid PyPI name and not in manifestoo EXTERNAL_DEPENDENCIES_MAP; would break OCA CI pip install). Documented in readme/INSTALL.md instead. - Replace per-module requirements.txt with readme/INSTALL.md (19.0 CI generates a repo-level requirements.txt from external_dependencies). - Commit files generated by pre-commit: pyproject.toml (whool), README.rst, static/description/index.html, repo requirements.txt. - Prettier reformat of empty view XMLs; add development_status Alpha.
…help, USAGE wording)
…k, accurate comment)
- _parse_json_response uses raw_decode to find the first valid JSON object, ignoring trailing prose with extra braces and markdown code fences. - Add tests for extract_invoice_data (mocked requests) covering the Authorization header behavior.
- _ai_prepare_image cleans up the temp file on render failure - _ai_set_untaxed_line scopes account lookup to the move's company (company_ids) - Add tests for action_extract_with_ai guards (non-draft, wrong move_type, missing attachment) and the enqueue path
…instead of General Settings
512d23f to
985f034
Compare
|
Conflict resolved. Rebased onto the current
The branch now contains only Note on CI: the test jobs currently fail only because |
Add the
ai_document_extractionmodule: local OCR (PaddleOCR) + LLM (Ollama) invoice data extraction into draftaccount.moverecords.Features
[HEADER]/[BODY]/[FOOTER]from bounding boxes)qwen3:4bvia Ollama) with a strict JSON schema, logo/header guard and hallucination controls (no math, null for unknown)queue_job(non-blocking UI)res.config.settings(API base URL, model, OCR language, match threshold)Notes
paddleocr,rapidfuzz, etc.) are declared in the manifest / reporequirements.txt;cv2is imported lazily and documented inreadme/INSTALL.mdsincecv2is not a valid PyPI distribution name for CI.queue_job(OCA/queue, 19.0).