Skip to content

About

Scanned-document workbench that AI agents can operate: clean, OCR, annotate PDF and DjVu, with a local MCP server. macOS, Windows, Linux, Web.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

5 stars

Watchers

1 watching

Forks

Latest commit

 

History

8,436 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EVB Viewer

EVB Viewer turns raw scans and DjVu files into clean, searchable, annotatable PDFs: native scan cleanup, Tesseract OCR in 31 languages and for early printed books, annotation, and export. It runs offline on macOS, Windows, and Linux, and the same workspace runs in a browser tab with nothing to install. It is free and the source is MIT.

The document is also an AI workspace. An optional assistant, off by default, can operate the open document for you, and the app runs a local MCP server so Claude Code, Cursor, or any other MCP client can drive it too.

The EVB Viewer workspace

Try it without installing

web.evb-viewer.com runs the same workspace in a browser tab, with no account and no install. Open a local PDF, DjVu file, or image and you can read it, search it, annotate it, reorder, rotate, crop and extract pages, and export the result. The document is opened by the page itself and never uploaded, and the page operations run the same Rust code as the desktop app, compiled to WebAssembly.

The heavy work stays on the desktop. OCR, scan cleanup, the assistant, and jobs larger than a browser tab's memory need the installed app.

Install

One codebase, four targets. The Windows and Linux builds are native on x64 and ARM64; the macOS build targets Apple Silicon.

Platform Download
macOS DMG (Apple Silicon)
Windows Installer (x64 and ARM64)
Linux DEB (x64 and ARM64)
Browser web.evb-viewer.com (no install)

evb-viewer.com offers the same builds and picks the right installer for the machine you are on, alongside the feature pages and the user guide. Every release ships SHA256SUMS and build provenance files.

What it does

The app is built around one workflow, from a shoebox of scans to a document you can search.

  • Open PDF, DjVu, and image batches. Combine loose page images into one PDF.
  • Clean scanned pages: deskew, despeckle, binarize, crop, and split two-page spreads. This runs in a native Rust engine, not a filter chain.
  • OCR the pages with Tesseract and tessdata-best models. English and Russian are bundled for offline use; 29 more languages download on demand, including Ancient Greek, Hebrew, Arabic, Syriac and Latin. Books printed before about 1800 keep their long s (ſ), æ, œ and ct in any Latin-script language.
  • Export a searchable PDF, or DOCX (in the page's columns), PNG, JPG, and multi-page TIFF.
  • Annotate with free text, ink, highlight, shapes, arrows, notes, and placed images. Edit bookmarks, page labels, and page order from the sidebar.
  • Work at scale across tabs, split panes, and multiple windows, with tab transfer between windows.

The AI assistant and the MCP server

The assistant works on the document you have open. It can rebuild a book's outline from its printed table of contents, apply page labels from the printed page numbers, find every mention of a term across a scanned volume, or report where the OCR text layer is thin.

The assistant is off by default. Nothing leaves your machine until you enable it and sign in with your own Codex or Claude account, and the app ships no API key and runs no service of its own. Cleanup, OCR, search, export, and annotation never use it, so the app is fully usable with the assistant switched off for good.

Neither provider needs a desktop app. Codex needs nothing installed at all: if your machine has no codex, the app fetches a pinned release and checks it against a checked-in checksum. Claude runs through the Claude Code CLI, so install that and sign in there first. See the assistant for the setup and what to ask it.

The same capabilities are available to outside agents. With external MCP enabled, the running app exposes a local Model Context Protocol server with around 28 document tools, so Claude Code, Cursor, or any MCP client can read pages, search, and drive the viewer. See connecting an MCP client.

Why this exists

Cleaning and recognizing a scanned book is a solved problem only if you pay for ABBYY FineReader or assemble a chain of ScanTailor, OCRmyPDF, and a separate viewer. Neither path handles DjVu as a first-class input, and neither lets you fix the result in the same window where you read it. EVB Viewer is for the people who hit that wall: archivists, librarians, historians, philologists, and anyone maintaining a personal library of scans.

Engineering

EVB Viewer is written and maintained by one person. The shell is Electron and Nuxt, but the work that matters happens in native code and in the process boundaries around it.

  • Rust sidecars for scan cleanup (the largest crate, with its own JBIG2 codec and raster IO), page operations, image combination, and PDF search.
  • PDF.js renders, Rust writes. The renderer never produces PDF bytes; one writer owns serialization, incremental saves, and multi-gigabyte documents.
  • A local MCP server with a capability registry and two provider adapters: the Codex app-server in a sandboxed child process with an isolated home, and the Claude Agent SDK. Every request is bound to one window, tab, document, and revision, over a random port behind a bearer token.
  • Release engineering: signed and notarized installers, an auto-update canary, and build provenance.
  • Opt-in diagnostics. Crash reporting through @sentry/electron is consent-gated and off until you turn it on. One scrubber removes paths, file names, URLs and document text before anything leaves the machine.

ARCHITECTURE.md is the one-page map.

How it is built

This repository is developed with a heavily gated AI-assisted workflow. Every change, whoever or whatever writes it, goes through the same lint, type, unit, integration, and packaged-app checks before it lands, and a commit that adds or weakens a check is rejected unless a human asked for it. The commit count is high for that reason. The rules that workflow runs under are in AGENTS.md, in the open. The design decisions are mine and are recorded in the decision records and the glossary that fixes the vocabulary the code uses.

Status

Actively developed. Viewing, editing, annotation, OCR, scan cleanup, export, and the release pipeline are stable and used daily. The assistant and the external MCP server are opt-in and still moving. The hosted browser build sends no server-side error reports.

Docs

License

MIT Copyright (c) 2026 Eugene Barsky

About

Scanned-document workbench that AI agents can operate: clean, OCR, annotate PDF and DjVu, with a local MCP server. macOS, Windows, Linux, Web.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages