jev-eyes
Local library that turns an image into a transparent text state (OCR, boxes, labels) so Jev can decide over screenshots.
Overview
jev-eyes gives Jev, a text-only model, honest access to images. It turns an image into the text state Jev can decide over, locally, and returns it as a plain dict so you always see exactly what Jev saw. The state includes OCR text in reading order, image size and source, OCR blocks with bounding boxes and confidence, and optional labels; a compact mode keeps only image, text and top labels when tokens matter more than positions.
Integration is one line: pass see("screenshot.png") as the state. The README's example asks whether an image is purely decorative, what kind it is (screenshot, chart, photo or document), and whether the extracted text is insufficient, which acts as a gate to escalate to a vision-language model only when needed. see() needs no key, and ask() does both steps when TYPESAFE_API_KEY is set.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Is this image purely decorative, carrying no information? | — |
| Choice | What is this image? | screenshot · chart · photo · document |
| Yes / no | Is the extracted text insufficient to describe what the image shows? | — |
How it works
- Run see() on an image locally to get OCR text, boxes and labels
- Pass the dict as state with typed questions
- Read Jev's answers
- Escalate to a VLM only when needs_vision is high
Strengths
- Perception is visible, not hidden
- No key needed for extraction
- Cheap gate before costly vision models
Caveats
- OCR quality limits what Jev can judge
- PyPI release pending at time of README
Getting started
`pip install git+https://github.com/LeddoEngano/jev-eyes` then `jev-eyes see screenshot.png --show`.At a glance
- Type
- Project
- Status
- beta
- Language
- Python
- Runtime
- Library and CLI
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Also in the state: \`image\` (size, source), \`blocks\` (\`\[x, y, w, h\]\` boxes with OCR confidence) and, if installed, \`labels\`. \`see(img, compact=True)\` keeps only \`image\`, \`text\` and top label names when tokens matter more than positions.
logicrw/awesome-jev-projects
Frequently asked questions
Can Jev see images?
No. jev-eyes converts images to text locally so Jev can decide over that text.
Do I need a key to extract?
No, see() runs locally without a key.
When should I use a vision model instead?
When Jev's needs_vision answer is high, indicating the text is not enough.
Related projects
Classifies tax PDF pages into 261 IRS forms and 7 page kinds with one Jev request per page and a confidence gate.
ProjectproductionTypeScriptRust tool that asks Jev which PDF pages genuinely need OCR, extracting text pages locally and sending only the rest to OCR.
ProjectbetaRustWindows office workbench with search, OCR and batch renaming, where Jev optionally helps pick extracted contract fields.
ProjectbetaRustDocker service that classifies the Paperless-ngx inbox with Jev (or local Clef via Ollama), setting confident fields and queueing the rest.
ProjectbetaLong-document search that walks a PageIndex tree, asking Jev Choice which page or branch answers the question, with no embeddings.
ProjectprototypePythonLoopfour Studio features rebuilt with Jev: code finds candidates, Jev picks with confidence, code assembles verbatim results.
ProjectprototypeTypeScript