VS Code extension · Obsidian plugin

Turn an editor's annotated PDF back into source edits.

You write in AsciiDoc, ship a PDF, and get it back covered in highlights, strikethroughs, and sticky notes. Eddie Doc reads that PDF, recovers the text under each mark, and maps every annotation to the exact line in your .adoc — as navigable, resolvable review items.

From marks to mapped edits

Every markup in the PDF becomes a review item anchored to a source line.

Entities are connected by well-defined relationships. Unlike a relational database, a graph places relationships at the center of the model. We will move from simple triples to richer metagraph structures.
Highlight → “Strong framing — keep this.” mapped to line 7 · Delete → “Too advanced for an intro.” mapped to line 11 · character-precise so only the struck words are removed.

Works in

Two places, one shared core and one review format.

▣ VS Code

Released. Activity-bar tree, inline decorations, Problems panel, comment threads and lightbulb quick-fixes.

Install from the Marketplace

◇ Obsidian

New; the first release is pending and the plugin has not yet been tested on real devices. A review panel, editor markup, and mobile support through the same code.

Install steps · User guide

›_ Command line

Extract, map, report, stamp and strip anchors without an editor. It reads and writes the same review files.

See the README

What it does

Extract, map, review, and act — without ever rewriting your prose automatically.

◈ Extracts

Highlights, strikethroughs, underlines, sticky-note comments and caret/insert marks from the PDF via pdfjs — including the comment body and author.

⇄ Maps

Fuzzy text matching that strips AsciiDoc syntax first, so a highlighted phrase lines up with your markup-laden source. Unicode-aware (incl. Cyrillic).

▤ Shows

An activity-bar tree grouped Open / Needs review / Unmatched / Resolved, inline decorations with hovers, and Problems-panel diagnostics.

✎ Acts

Lightbulb quick-fixes: delete struck text character-precisely, replace a marked range, insert at a caret offset, or pull a remark in as a comment. All explicit and undoable.

☰ Triages

Clear a pile of unmatched marks in one keyboard pass, each with a pre-ranked shortlist of candidate source lines to link or skip.

⤓ Tracks

Resolution state, replies and manual re-links persist in a diffable .review.json sidecar — preserved across re-maps and across rounds.

◐ Handles rounds

Several rounds, each with several annotated PDFs from different editors. Resolved state carries forward; mappings can be merged or extended with more PDFs.

◇ On mobile

In Obsidian the same code is meant to run on phones and tablets, with the PDF kept in the vault. Checked on desktop Obsidian and tried on a phone.

Eddie Doc for Obsidian

Review an editor's PDF against your AsciiDoc source, inside your vault.

The plugin gives you a review panel (Open, Needs review, Unmatched, Resolved) with threaded replies, resolve, and buttons that apply a struck-out deletion or a replacement to the source. In the editor it adds line highlights, gutter number badges and hover text, display only and never written to your file. It does not render AsciiDoc; use another plugin for a preview.

Status: version 1.4.0. It has been tested in a running Obsidian on macOS (1.8.4 and 1.13.7) and tried on a phone, though not measured on a large PDF. It is not in the community plugin list yet.

  1. Download main.js, manifest.json and styles.css from the release whose tag has no v into <vault>/.obsidian/plugins/eddie-doc/ and enable the plugin, or add Volland/eddie-doc in the BRAT plugin.
  2. Put the .adoc and the annotated PDF in the vault.
  3. Run Eddie Doc: Open PDF review and work through the panel.

How mapping works

Robust to the source and PDF not being character-identical.

  1. PDF markup annotations carry quadPoints — per-line rectangles over the marked text. Eddie Doc intersects those with the positioned text of each page to recover the words under the mark.
  2. Both the recovered text and every source line are normalized — AsciiDoc delimiters, roles, macros and inline markers stripped, lowercased, punctuation removed.
  3. They're compared with a blended Sørensen–Dice (bigram) + token-overlap score over a sliding window of source lines. The best span above the threshold wins.
  4. Low-confidence matches surface as Unmatched for a one-click manual re-link, rather than guessing.

The workflow

Navigate + review, edit by hand. Eddie Doc points you at the right line and remembers what you've handled.

  1. Open the .adoc you're reviewing and run Eddie Doc: Open PDF Review for AsciiDoc. Pick the annotated PDF.
  2. Annotations appear in the sidebar and as inline markers. Click to jump; hover a line to read the comment and mark it resolved.
  3. Edit your .adoc, then run Re-map Annotations to re-check positions. Resolution state is preserved across re-maps.

An open, portable artifact

The review lives in a committable, tool-agnostic sidecar — not locked inside the editor.

Every mapping is stored as a .review.json file in the Eddie Doc Review Format: a versioned, schema-validated standard with relative paths and content hashes, so it travels with your repo or vault and can be read by the VS Code extension, the Obsidian plugin, the CLI, a CI gate, or another editor.

Tell us what to build next

A five-minute survey for people who actually run review rounds.

Which features earn their place, how often marks land under Unmatched, and the one thing you wish Eddie Doc did — the answers go straight into the roadmap. No account needed, and you can skip anything.