Skip to content

Document and PDF Annotation Tools Compared: Open-Source and Paid

Compares Potato, Labelbox, Label Studio, INCEpTION, Kili, Prodigy and doccano for annotating PDFs, covering native rendering, region boxes, OCR and cross-page links.

Annotating a PDF needs three things a text tool does not provide: rendering the real page, anchoring labels to page coordinates, and linking annotations across pages. Potato, Labelbox, INCEpTION and Kili render PDFs natively. Labelbox and Potato are the two that document a way to link annotations on different pages. Label Studio's open-source edition asks you to convert the PDF to images first, and its native PDF labeling is an Enterprise feature.

A PDF describes marks on pages rather than a sequence of characters, so annotating one as extracted text throws away the page number, the column order, and the table structure. How to annotate documents covers why that matters and what the alternatives are. This page compares the tools.

This page covers documents only. Annotation Tools Compared covers every data type on one page.

Capabilities side by side

Every entry below was read from the tool's own documentation on 2026-09-24. A dash means the documentation did not describe the capability, which is not the same as the tool refusing it.

ToolRenders PDF nativelyRegion boxes on the pageLinks across pagesBuilt-in OCRLicense
PotatoYesYesYesOpt-in, link modeOpen source
LabelboxYesYesYesYes, in-editorTier not stated
KiliYesYesRelations yes, across pages not statedYesFree trial, then paid
INCEpTIONYesText spans onlyRelations yes, across pages not statedNeeds embedded textApache 2.0
Label StudioEnterprise onlyYes-Reads existing text layerApache 2.0 core, PDF gated
ProdigyVia prodigy-pdf pluginYes-Yes, via TesseractPaid, $390 personal
doccano----MIT
brat----MIT
CVATDocs list images, video, audio, point clouds---Open source

Two columns decide most projects. Native rendering is what lets an annotator see the document instead of a reconstruction of it, and cross-page linking is what lets them record that a claim on page 2 rests on a table on page 9.

Cross-page linking

Relations within a page are common. Every tool here that renders PDFs can join two annotations that sit near each other. Linking across a page boundary is rarer, because it requires the interface to hold two distant locations on screen or in memory at once.

Labelbox documents an explicit workflow for it. The annotator selects the relationship tool, right-clicks the first annotation and chooses "Select relationship start", scrolls to the destination and chooses "Select relationship end". Potato takes the other approach, stacking every page in one scrollable container in view_mode: scroll so both ends of the link are reachable without leaving the view, and drawing the link as a single arc.

INCEpTION and Kili both support relations on PDFs, and neither one's documentation states whether a relation may span pages. Treat that as unknown rather than as a no.

Where the editions differ

Label Studio is the case where the edition matters more than the tool. Its open-source template for multi-page documents says that annotation "requires that you first pre-process your document by converting it into separate images", which loses the text layer and with it text-span annotation. Native PDF rendering and the OcrLabels tag are documented as Enterprise features, with PDFs up to 100 pages and a pageIndex on each result.

Its OCR reads a text layer that already exists rather than recognizing characters in an image. The docs are direct about the requirement, asking you to verify "whether you can highlight text in the PDF using your cursor". A scanned page needs an external OCR step first.

Prodigy reaches PDFs through the separate prodigy-pdf plugin, which supplies pdf.image.manual for boxes on rendered pages, pdf.spans.manual for spans on extracted text, and pdf.ocr.correct for reviewing Tesseract output. Prodigy is a proprietary lifetime license at $390 for personal use and $490 per seat for companies, with a five-seat minimum.

doccano and brat are text tools. doccano's shipped importer catalogue lists TextFile, TextLine, CSV, FastText, JSON, JSONL, Excel, CoNLL, ImageFile and AudioFile, with no PDF importer among them. brat stores each document as a plain UTF-8 text file beside a standoff .ann file, so pages have no representation in its data model. Both are MIT licensed and both remain good choices for the text tasks they were built for.

CVAT's documented media formats are images, video, audio and point clouds. Its documentation does not mention PDF, which is a statement about the documentation rather than about the codebase.

Scanned documents

OCR is where the tools diverge most in what they will do for you. Labelbox and Kili recognize text from pixels, so a scan works without preparation. Kili uses the PDF's native text where it exists and falls back to the image otherwise, and accepts externally computed OCR through a metadata field in Google Vision format. Label Studio and INCEpTION both require an embedded text layer and leave recognition to you.

Potato's OCR is opt-in and runs only in link mode. The ocr option takes false, true, or auto, and auto runs the pass only when the embedded text layer comes back empty, which suits a corpus mixing born-digital files with scans.

yaml
instance_display:
  fields:
    - key: pdf
      type: pdf
      label: "Document"
      display_options:
        annotation_mode: link
        view_mode: scroll
        ocr: auto
        enable_text_anchors: true
        enable_region_anchors: true
        anchor_labels:
          - name: claim
            color: "#dc2626"
          - name: figure
            color: "#2563eb"
        link_types:
          - name: refers_to
            directed: true
            allowed_source_labels: [claim]
            allowed_target_labels: [figure]

allowed_source_labels and allowed_target_labels constrain which anchors a link type can join, so a refers_to link can start only on a claim and end only on a figure. A guideline expressed that way is enforced by the interface rather than remembered by the annotator.

What Potato does not do for documents

Potato does not supply an annotator workforce, and Labelbox, Kili and Scale are built around managed labeling services. Potato has no model-training loop attached to document annotation, which is what prodigy-pdf offers through the rest of Prodigy. Potato's OCR runs only in link mode, so a span-mode task on scans needs the text layer added beforehand.

Word and Markdown files use Potato's separate document display rather than the pdf display. Among the tools here, doccano's and INCEpTION's format lists are explicit enough to say DOCX is absent; the others do not mention it either way.

Further reading

Checked against each project's documentation, pricing page and repository on 2026-09-24. If a cell is wrong, tell us.