Skip to content

jev-eyes

Local library that turns an image into a transparent text state (OCR, boxes, labels) so Jev can decide over screenshots.

ProjectbetaMIT

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

TypeQuestionAnswers
Yes / noIs this image purely decorative, carrying no information?—
ChoiceWhat is this image?screenshot · chart · photo · document
Yes / noIs the extracted text insufficient to describe what the image shows?—

How it works

  1. Run see() on an image locally to get OCR text, boxes and labels
  2. Pass the dict as state with typed questions
  3. Read Jev's answers
  4. 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.

    ProjectproductionTypeScript
  • Rust tool that asks Jev which PDF pages genuinely need OCR, extracting text pages locally and sending only the rest to OCR.

    ProjectbetaRust
  • Windows office workbench with search, OCR and batch renaming, where Jev optionally helps pick extracted contract fields.

    ProjectbetaRust
  • Docker service that classifies the Paperless-ngx inbox with Jev (or local Clef via Ollama), setting confident fields and queueing the rest.

    Projectbeta
  • Long-document search that walks a PageIndex tree, asking Jev Choice which page or branch answers the question, with no embeddings.

    ProjectprototypePython
  • Loopfour Studio features rebuilt with Jev: code finds candidates, Jev picks with confidence, code assembles verbatim results.

    ProjectprototypeTypeScript