Add explicitly configured local OCR proposal workflow - #212
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds an experimental, explicitly configured
propose_pdf_ocrworkflow for a separately installed macOS Vision adapter. Default discovery remains exactly 57 tools with the existing contract digest; OCR appears only after a user supplieslocalOCRin local configuration. No OCR engine, Python helper, installer or automatic package download is included in the extension.The tool requires one page, the exact source identity and explicit confirmation. It snapshots source/helper bytes, retains a private proposal, replays the page image, and returns words as unverified proposals with an offline review. It does not edit PDFs or replace native text. Returned, observed and omitted counts are separate.
Verification
Independent adversarial review accepted exact head
b50e12f51b7cbc7ef542d20b45f757a33c119dbdfor source integration after fixes to output-schema coverage and ordinary-completion process cleanup. The helper explicitly refuses encrypted PDFs, including those with an empty user password.The first full CI on
ae3bf4e1failed in native-suite expectations, default-versus-optional documentation, static scorer imports and source-bound oracle metadata. Reviewed successor3fb93639e23b7586c3ae18bfd779d9cc1eb89173corrects those. The OCR wire schema is byte-identical, the adapter is unchanged except removal of the moved schema block, and all eight oracle cases remain byte-identical. Scorer role lists, closure checks, score logic and tolerances are unchanged. Both full CI gates in run 36747949941 passed: Node 20.19 (33m28s) and Node 22.12 (34m34s), each 3,664 Vitest tests passed with 168 intentional skips, plus 20 Python checks, 25 OCR process checks, share contract, reproducible build and packaged smoke. The failed predecessor is not green evidence.Exact successor Mac verification: 209/209 across eight Vitest files, 25/25 wrapper tests, two reproducible clean MCPB builds (72,801,935 bytes, SHA-256
c62e7f8c48bd32274026c01ad815fe5db3dd2d63aee1ce5724ab14f97b95beaf) and the packed smoke pass. Independent source-delta acceptance confirms unchanged wire schema, all eight oracle case bodies and static module closure.Boundaries
This is source integration, not a public OCR release or installed Claude Desktop qualification. The administrator-selected Python environment remains trusted. Confidence is uncalibrated: the existing scan includes a wrong word at score 1.0. Windows/Linux do not run this macOS adapter. No host restart, provider calls, PDF mutation or user analytics were added.