# Marker

Local document converter with Markdown, JSON and optional hybrid LLM processing.

## What is known from testing

On 2026-10-11, the headlesson operator ran this lesson with Marker 2.0.0 (macOS26.5.2 arm64; Python3.11.13 disposable venv; wheel-only PyPI installation; no LLM use); the first 2 of 4 steps passed, then it stopped: Step3 conversion needs additional artifacts/models; exact marker_single ./sample.pdf first requests missing official font. Safety guard blocked this HTTP request before sending; no output created. Model download not performed. The final Next step is advice and was not run. An independent check (revision 3fadc9d) covered: Independent trial and audit up to install and help; the conversion step's font download was stopped by a guard and produced no output. Its limits: Bounded to the stopping point. Conversion after font and model preparation is unverified. This is the operator's own run, not a vendor claim.

- Test record: [test:lq2atao](/tests/lq2atao) — 2026-10-11, 2.0.0, partial

## Independent check

Independent check (revision 3fadc9d6215b): Independent trial and audit up to install and help; the conversion step's font download was stopped by a guard and produced no output.

Limits: Bounded to the stopping point. Conversion after font and model preparation is unverified.

## Description

Marker converts documents through a local model pipeline. It can emit Markdown, JSON or HTML and optionally use selected external LLM providers. A Streamlit interface and a FastAPI server are separate usage surfaces.

## Current lesson

Goal: Convert an owner-chosen local PDF without enabling optional remote LLM processing.

This is the current lesson. The test record above was run on the lesson as it was at its own revision; they can differ.

- 1. pip install marker-pdf
- 2. marker_single --help
- 3. marker_single ./sample.pdf
- 4. Inspect the generated output against the source PDF.

Next (advice, not tested): Next: Select the real PDF and destination, run marker_single <confirmed-PDF-path>, and compare text, tables and equations with the original. Choose --output_format json for structured output; only enable --use_llm after agreeing on provider, data transfer, cost and model-weight terms.

## Cautions recorded with the lesson

These notes come from the lesson. Some describe failures seen in tests; others are general cautions. Each one is not a separately tested result.

- Python 3.10 or newer, PyTorch and an owner-provided local sample are prerequisites.
- Apache-2.0 and free code use do not establish unconditional rights to model weights. Modified model-weight terms and paid commercial licensing may apply.
- The optional --use_llm path can incur provider costs; the initial conversion steps do not enable it. Next treats LLM use as optional and requires the user's data-transfer, cost and model-term decision.
- The bundled REST server supports fewer flags than CLI/SDK and omits --use_llm and --disable_ocr.
- Conversion output is not independent evidence of transcription accuracy.
- Confirm: Check output location, recognition quality on this document, provider credentials/costs and applicable model-weight terms; optional LLM use is not an accuracy guarantee.

## How to start

- cli Marker CLI: install `pip install marker-pdf`; check `marker_single --help`; auth: unknown; docs: [https://github.com/datalab-to/marker/blob/master/README.md](https://github.com/datalab-to/marker/blob/master/README.md)
- rest Marker local HTTP API server (small-scale): install `pip install marker-pdf pip install -U uvicorn fastapi python-multipart`; check `unknown`; auth: unknown; docs: [https://github.com/datalab-to/marker/blob/master/README.md](https://github.com/datalab-to/marker/blob/master/README.md)

Where each of these values comes from is listed per field under Sources (/interfaces/N/field).

## Compared facts

- license: Apache-2.0 (checked 2026-10-09, primary, official; source: [https://github.com/datalab-to/marker/blob/master/README.md](https://github.com/datalab-to/marker/blob/master/README.md))
- open_source: true (checked 2026-10-09, primary, official; source: [https://github.com/datalab-to/marker/blob/master/README.md](https://github.com/datalab-to/marker/blob/master/README.md))
- pricing: free (checked 2026-10-09, primary, official; source: [https://github.com/datalab-to/marker/blob/master/README.md](https://github.com/datalab-to/marker/blob/master/README.md))
- has_human_gui: optional (checked 2026-10-09, inferred, editorial; source: [https://github.com/datalab-to/marker/blob/master/README.md](https://github.com/datalab-to/marker/blob/master/README.md))
- non_interactive: unknown (not confirmed)
- machine_output: true (checked 2026-10-09, primary, official; source: [https://github.com/datalab-to/marker/blob/master/README.md](https://github.com/datalab-to/marker/blob/master/README.md))
- local_mcp: unknown (not confirmed)
- remote_mcp: unknown (not confirmed)
- cli: true (checked 2026-10-09, primary, official; source: [https://github.com/datalab-to/marker/blob/master/README.md](https://github.com/datalab-to/marker/blob/master/README.md))
- rest_api: true (checked 2026-10-09, primary, official; source: [https://github.com/datalab-to/marker/blob/master/README.md](https://github.com/datalab-to/marker/blob/master/README.md))
- auth: unknown (not confirmed)
- self_hostable: true (checked 2026-10-09, primary, official; source: [https://github.com/datalab-to/marker/blob/master/README.md](https://github.com/datalab-to/marker/blob/master/README.md))
- embeds_llm: yes (checked 2026-10-09, primary, official; source: [https://github.com/datalab-to/marker/blob/master/README.md](https://github.com/datalab-to/marker/blob/master/README.md))
- refusal_contract: unknown (not confirmed)
- audit_log: unknown (not confirmed)
- last_release: 2026-07-20 (checked 2026-10-09, primary, official; source: [https://pypi.org/pypi/marker-pdf/json](https://pypi.org/pypi/marker-pdf/json))
- ja_support: unknown (not confirmed)

## Sources

Each line names fields of this page (as JSON pointers into the .json version) and where they come from. Labels without a link are non-public sources. Fields not listed (such as test results) are the headlesson operator's own observations.

- /name, /one_liner, /lesson/cautions/items/1, /lesson/cautions/items/3, /interfaces/0/kind, /interfaces/0/name, /interfaces/0/install, /interfaces/0/verify, /interfaces/0/docs, /axes/license, /axes/open_source, /axes/pricing, /axes/machine_output, /axes/cli, /axes/rest_api, /axes/self_hostable, /axes/embeds_llm, /relations/0: [https://github.com/datalab-to/marker/blob/master/README.md](https://github.com/datalab-to/marker/blob/master/README.md) (checked 2026-10-09, primary, official)
- /description, /lesson/steps/0, /lesson/steps/1, /lesson/steps/2, /interfaces/1/name, /interfaces/1/install, /interfaces/1/docs: [https://github.com/datalab-to/marker/blob/master/README.md](https://github.com/datalab-to/marker/blob/master/README.md) (checked 2026-10-09, primary, editorial)
- /lesson/goal, /lesson/steps/3, /lesson/cautions/items/0, /lesson/cautions/items/4: headlesson editorial judgement (checked 2026-10-09, inferred, editorial)
- /lesson/next_advice, /lesson/cautions/items/5: [https://raw.githubusercontent.com/datalab-to/marker/master/README.md](https://raw.githubusercontent.com/datalab-to/marker/master/README.md) (checked 2026-10-10, inferred, editorial)
- /lesson/cautions/items/2: [https://github.com/datalab-to/marker/blob/master/README.md](https://github.com/datalab-to/marker/blob/master/README.md) (checked 2026-10-10, inferred, editorial)
- /interfaces/1/kind, /axes/has_human_gui: [https://github.com/datalab-to/marker/blob/master/README.md](https://github.com/datalab-to/marker/blob/master/README.md) (checked 2026-10-09, inferred, editorial)
- /axes/last_release: [https://pypi.org/pypi/marker-pdf/json](https://pypi.org/pypi/marker-pdf/json) (checked 2026-10-09, primary, official)

## Primary record

Test results here are the operator's own past lesson trials (legacy). They are not claimed to meet level L1 of run-task-contract/0.1.0.

## Relations

- used-for: [usecase:parse-documents-for-llm](/usecases/parse-documents-for-llm)

1 other relations point to records that are not published yet.

## Retrieve over MCP

`headlesson_get id="app:marker" sections ["lesson","gotchas"]` on https://mcp.headlesson.com/mcp

## Cite

headlesson app:marker: see test record test:lq2atao (https://headlesson.com/tests/lq2atao).

Page updated: 2026-10-13 (the date its content last changed).

要約（日本語）: Marker。運営の試用（2026-10-11、2.0.0、partial）の記録がある。詳しい条件・限界・出典は本文のとおり。
