The ecosystem
railreader2 is the reader. Two sibling projects take the same ideas further.
railreader2 is a thin desktop shell. The reading engine underneath it — rail navigation, layout analysis, OCR, search, annotations and Markdown export — lives in its own library, and a separate command-line tool uses that same engine to move review markup in and out of PDFs. All three are free and open source (MIT).
Library · .NET / NuGet
RailReaderCore
The portable libraries that power railreader2, built to be reused by other apps. Nothing in them depends on a UI toolkit, so the same engine can sit behind a desktop app, a command-line tool, or a future web or mobile reader.
- Rail navigation — line detection, reading order, semi-automatic scroll, the reading guide, freeze panes and portals.
- Layout analysis — Docling Heron, PP-DocLayoutV3 and PP-DocLayout-S behind one interface, with optional WebGPU acceleration and a model-free fallback that works from the PDF's text layer.
- Scanned pages — optional OCR that supplies the missing text layer, with skew correction and language packs.
- Everything else — search, annotations stored in the PDF itself, vision-model transcription of equations and tables, and structured Markdown export.
Packages: RailReader.Core, RailReader.Core.Pdfium,
RailReader.Core.Analysis (and .WebGpu), RailReader.Core.Ocr.RapidOcr,
RailReader.Core.Vlm.OpenAI, RailReader.Renderer.Skia and
RailReader.Export.
Command-line tool · Linux & Windows
RailMark
PDF review markup for AI agents, in both directions. RailMark reads the highlights and comments in a PDF out as Markdown or JSON, exports any PDF to layout-aware Markdown, and writes an AI reviewer's markup back in as native PDF annotations. It ships as one self-contained binary.
- Read markup out — every annotation in the file, filed under the document's headings in reading order, with a summary table.
- Export a PDF — layout-aware Markdown from any PDF, ready for an AI to summarise.
- Write markup back — highlights, underlines, strikeouts, replacements and notes applied from a plan, with quoted text resolved to exact PDF geometry.
It is built directly on the RailReaderCore packages, and the repository includes a Claude Code skill so an agent can produce review markup for you.
How they fit together
- railreader2 is where you read and mark up. Highlights, underlines and comments are saved into the PDF as native annotations, so other tools can read them.
- RailMark turns those annotations into a Markdown or JSON summary you can hand to an AI — and writes an AI reviewer's markup back into a PDF, where railreader2 shows it in the Comments list and on the page.
- RailReaderCore is the shared engine under both, and the part to build on if you want rail reading or PDF structure extraction in your own .NET project.
railreader2 also has its own command-line tool for rendering pages, extracting structure and annotations, and exporting Markdown. RailMark is the one to reach for when the job is review markup rather than reading.