per-page PDF to Markdown SaaS vs MinerU: the 80,288 star alternative worth checking
per-page PDF to Markdown SaaS versus MinerU — 80,288 GitHub stars, a non-standard licence GitHub cannot classify, and the trap most tool roundups skip..
per-page PDF to Markdown SaaS vs MinerU: the 80,288 star alternative worth checking
MinerU converts PDFs to Markdown locally, on your own hardware, and its repository is one of the most-starred document-parsing projects on GitHub. The catch is that its license is not permissive: the GitHub API returns
NOASSERTION, which means the terms are custom and must be read before you ship anything. Worth evaluating for internal batch pipelines; not worth adopting blindly into a commercial product.
Why it matters
Every team that has ever needed to get text out of a PDF has faced the same decision. Either you pay a SaaS conversion service that bills per page, or you build and maintain your own extraction pipeline. The SaaS route is fast to integrate and someone else handles the hard cases — scanned pages, multi-column layouts, tables, formulas. The cost is that every document you process leaves your infrastructure, and the meter runs on volume. The self-hosted route inverts both properties: nothing leaves your machine, and the marginal cost of the ten-thousandth document is the same as the first, which is to say nothing beyond electricity and the time you spent setting it up.
MinerU sits on the self-hosted side of that line. It is developed by OpenDataLab, it is actively maintained, and it has accumulated a large enough user base that it is no longer a niche experiment. For a Western developer who has only ever reached for a hosted conversion API, it is the obvious thing to compare against — and the comparison is not as one-sided as the pitch suggests, because the license situation has changed and the change matters.
This article does not argue that you should switch. It argues that you should know what you are switching to, and that the license question is the one that decides it.
The "because Z"
-
Local conversion removes the data-egress question entirely. When you run conversion on your own machine, no document is transmitted to a third party. For teams handling contracts, medical records, internal financials, or anything covered by a data-processing agreement, that is not a performance argument — it is a compliance argument, and it is often the only argument that matters. A hosted service can offer strong contractual protections, but it cannot offer the property of never having received the file. That property is binary, and self-hosting is the only way to get it.
-
Batch processing drives the marginal cost per document toward zero. SaaS conversion is priced per page, so cost scales linearly with volume: process twice as many documents, pay twice as much. Self-hosted batch processing breaks that relationship. Once the machine and the pipeline exist, the cost of the next document is bounded by compute time, not by a per-page rate. The repository's activity level — 80,288 stars and a commit on 2026-09-19, one day before this verification — indicates a project that is being maintained rather than abandoned, which is the precondition for that cost structure holding up over time.
-
The license changed in 2026, and that is exactly why this needs checking. The editorial reason this journal re-verifies every license before publication is that licenses move. A project can be permissive at the moment you evaluate it and restrictive at the moment you ship. The GitHub API reports MinerU's license as
NOASSERTION— meaning GitHub could not map the repository's license file to a recognized SPDX identifier. That is not the same as "all rights reserved," but it is also not the same as MIT or Apache-2.0. It means the terms are custom, and custom terms have to be read by a human before they are relied on.
The data
| Tool | License | Stars | Last commit |
|---|---|---|---|
| MinerU | NOASSERTION | 80288 | 2026-09-19 |
Verified via the GitHub API on 2026-09-20.
Two things in that table deserve to be read together. The activity signal is strong: 80,288 stars places MinerU well inside the top tier of document-processing repositories, and a commit one day before verification means the project is under active development, not coasting. The license signal is unresolved. NOASSERTION is GitHub's way of saying it could not classify the license automatically, and automated classification fails for a reason — either the license is genuinely custom, or it is a modified version of a standard license, or the repository contains multiple licenses across subdirectories. None of those possibilities can be resolved by looking at the API response. They can only be resolved by opening the license file and reading it.
Note also what the table does not contain. There is no benchmark column, because no benchmark was verified for this article. If you have seen performance claims about MinerU — pages per second, accuracy on table extraction, comparison against other parsers — those come from the authors or from third parties, and they are not independent measurements reproduced here. Treat them as claims to be tested on your own corpus, not as established facts.
The trap to avoid
The trap here is the license, and the alert raised during verification states it plainly: MinerU's license is not permissive. The API returns NOASSERTION.
This is the single most important sentence in this article, so it is worth being precise about what it does and does not mean. NOASSERTION does not mean the project is proprietary. It does not mean you cannot use it. It does not mean the project is hostile to commercial use. It means GitHub's automated license detection could not match the repository's terms to a known license template, and therefore no assumption about your rights is safe. You cannot reason from "it's on GitHub" to "I can use it however I want." You cannot reason from "it has 80,000 stars" to "the license must be fine." Popularity and licensing are independent variables, and conflating them is how teams end up in a legal review they did not plan for.
The practical consequence is that the decision to adopt MinerU is not a technical decision that a developer can make alone. It is a technical decision plus a legal one. If you are using it to convert your own documents for your own reading, the license question is largely academic. If you are embedding it in a product, redistributing it, or offering it as part of a service, the custom terms govern what you may do, and someone with the authority to interpret them needs to read the actual license file — not this article, and not the GitHub sidebar.
There is a second, quieter trap worth naming: the assumption that a license which was permissive when you evaluated it will remain permissive. The brief for this article notes that the license changed in 2026. That is the reason this journal re-verifies licenses at publication time rather than trusting a cached evaluation. If you adopt a dependency on the strength of a license you read eighteen months ago, you have adopted a dependency on terms that may no longer exist. Pin your dependency, record the license version you relied on, and re-check when you upgrade.
The activity trap does not apply here. With a commit one day before verification and the repository not archived, MinerU shows no sign of being dormant. The risk in this project is legal, not operational.
The verdict
Switch if you are processing documents you cannot or will not send to a third party, if your volume makes per-page pricing painful, and if you have the legal capacity to read and clear a custom license before you ship. Do not switch if you need a permissive license you can rely on without review, if you are embedding the tool in a commercial product and cannot absorb a legal review, or if you need an independent benchmark before committing — none was verified here, and the authors' own numbers are not a substitute for testing on your corpus.
References
- MinerU — NOASSERTION, 80288 stars, last commit 2026-09-19, primary language Python.
- MinerU official site.
- MinerU2.5-Pro-2605-1.2B on Hugging Face.
- huggingface.co page linked from the MinerU README.
- modelscope.cn page linked from the MinerU README.
- arxiv.org page linked from the MinerU README.
All figures were read from the GitHub API (api.github.com) on 2026-09-20. They move: re-check before you ship.
Was this article helpful?
Let us know to improve our AI generation.
Related Articles
Tesseract / Adobe OCR / paid OCR APIs vs PaddleOCR: the 89,425 star alternative worth checking
Tesseract / Adobe OCR / paid OCR APIs versus PaddleOCR — 89,425 GitHub stars, licence Apache-2.0, and the trap most tool roundups skip. Verified 2026-09-13.
ElevenLabs and Western voice APIs vs CosyVoice 2: the 39,836 star alternative worth checking
ElevenLabs and Western voice APIs versus CosyVoice 2 — 39,836 GitHub stars, licence Apache-2.0, and the trap most tool roundups skip. Verified 2026-09-03.
headless browsers such as Playwright vs curl_cffi: the 6,493 star alternative worth checking
headless browsers such as Playwright versus curl_cffi — 6,493 GitHub stars, licence MIT, and the trap most tool roundups skip. Verified 2026-09-03.