Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
767 changes: 767 additions & 0 deletions docs/case-studies/issue-143/README.md

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions docs/case-studies/issue-143/data/initial-ci-runs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[{"conclusion":"success","createdAt":"2026-07-27T04:35:53Z","databaseId":30237547903,"headSha":"432a8ecee2d651b334d7eaa9f93f53a82f6af363","workflowName":"Rust Checks and Release"},{"conclusion":"success","createdAt":"2026-07-27T04:35:53Z","databaseId":30237547904,"headSha":"432a8ecee2d651b334d7eaa9f93f53a82f6af363","workflowName":"JavaScript Checks and Release"},{"conclusion":"success","createdAt":"2026-07-27T04:35:53Z","databaseId":30237547898,"headSha":"432a8ecee2d651b334d7eaa9f93f53a82f6af363","workflowName":"JS/Rust Parity"}]
1 change: 1 addition & 0 deletions docs/case-studies/issue-143/data/issue-143-comments.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[]
1 change: 1 addition & 0 deletions docs/case-studies/issue-143/data/issue-143.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"author":{"login":"konard"},"body":"","createdAt":"2026-07-14T16:46:43Z","labels":["documentation","enhancement"],"number":143,"state":"OPEN","title":"Use all best practices from https://github.com/opendatalab/mineru but in Rust/JavaScript and using Unlicense (Public Domain)","updatedAt":"2026-07-14T16:46:43Z","url":"https://github.com/link-assistant/web-capture/issues/143"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"body":"fix: enhance PDF font analysis by adding Latin and CJK font usage detection; fix #5238: add offset duplicate character detection for improved text rendering","html_url":"https://github.com/opendatalab/MinerU/releases/tag/mineru-3.4.4-released","name":"mineru-3.4.4-released","published_at":"2026-07-10T11:54:35Z","tag_name":"mineru-3.4.4-released","target_commitish":"master"}
1 change: 1 addition & 0 deletions docs/case-studies/issue-143/data/mineru-repository.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"created_at":"2024-02-29T08:52:34Z","default_branch":"master","description":"Transforms complex documents like PDFs and Office docs into LLM-ready markdown/JSON for your Agentic workflows.","forks_count":6363,"full_name":"opendatalab/MinerU","html_url":"https://github.com/opendatalab/MinerU","license":{"key":"other","name":"Other","spdx_id":"NOASSERTION"},"open_issues_count":65,"pushed_at":"2026-07-25T03:52:10Z","snapshot_commit":"79d6d8d79fb8f3ddba5cc34c07a16f0ec36f56c7","snapshot_date":"2026-07-27","stargazers_count":75808,"topics":["ai4science","document-analysis","docx","extract-data","layout-analysis","ocr","parser","pdf","pdf-converter","pdf-extractor-llm","pdf-extractor-pretrain","pdf-extractor-rag","pdf-parser","pptx","python","xlsx"],"updated_at":"2026-07-27T04:20:03Z"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"default_branch":"main","description":"[CVPR 2025] A Comprehensive Benchmark for Document Parsing and Evaluation","full_name":"opendatalab/OmniDocBench","html_url":"https://github.com/opendatalab/OmniDocBench","license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0"},"pushed_at":"2026-07-24T07:14:06Z","snapshot_date":"2026-07-27","stargazers_count":1915,"updated_at":"2026-07-25T21:34:26Z"}
1 change: 1 addition & 0 deletions docs/case-studies/issue-143/data/pr-146-comments.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[]
1 change: 1 addition & 0 deletions docs/case-studies/issue-143/data/pr-146-reviews.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[]
1 change: 1 addition & 0 deletions docs/case-studies/issue-143/data/pr-146.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"baseRefName":"main","headRefName":"issue-143-614fca5161bb","isDraft":true,"number":146,"state":"OPEN","title":"[WIP] Use all best practices from https://github.com/opendatalab/mineru but in Rust/JavaScript and using Unlicense (Public Domain)","url":"https://github.com/link-assistant/web-capture/pull/146"}
1 change: 1 addition & 0 deletions docs/case-studies/issue-143/data/recent-merged-prs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[{"mergedAt":"2026-06-25T23:06:49Z","number":142,"title":"feat: add shared dialog capture","url":"https://github.com/link-assistant/web-capture/pull/142"},{"mergedAt":"2026-06-14T21:13:55Z","number":140,"title":"fix(ci): repair merge detection and Rust Docker build","url":"https://github.com/link-assistant/web-capture/pull/140"},{"mergedAt":"2026-06-14T16:12:36Z","number":138,"title":"fix(rust): repair fresh dependency resolution (#137)","url":"https://github.com/link-assistant/web-capture/pull/138"},{"mergedAt":"2026-06-12T16:43:00Z","number":136,"title":"docs: add FormalAI capture contract","url":"https://github.com/link-assistant/web-capture/pull/136"},{"mergedAt":"2026-05-30T10:03:09Z","number":134,"title":"Add Browserbase comparison case study","url":"https://github.com/link-assistant/web-capture/pull/134"}]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"created_at":"2025-05-06T21:59:30Z","default_branch":"main","description":"A library, CLI and microservice to capture the web in required format","forks_count":0,"full_name":"link-assistant/web-capture","html_url":"https://github.com/link-assistant/web-capture","js_version":"1.10.10","license":{"key":"unlicense","name":"The Unlicense","spdx_id":"Unlicense"},"open_issues_count":4,"rust_version":"0.3.32","snapshot_commit":"4c5443e1ab83a4a250457933079eaf2fbd61ed21","snapshot_date":"2026-07-27","stargazers_count":0}
72 changes: 72 additions & 0 deletions docs/case-studies/issue-143/online-sources.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Online sources

Research snapshot: 2026-07-27.

The analysis in this case study is pinned to MinerU commit
[`79d6d8d`](https://github.com/opendatalab/MinerU/commit/79d6d8d79fb8f3ddba5cc34c07a16f0ec36f56c7)
and web-capture commit
[`4c5443e`](https://github.com/link-assistant/web-capture/commit/4c5443e1ab83a4a250457933079eaf2fbd61ed21).
That pin matters because both projects evolve quickly.

## Primary MinerU sources

| Source | URL | Used for |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------- |
| Repository | <https://github.com/opendatalab/MinerU> | Product scope, supported inputs, backends, platforms, CLI, API, deployment, and project layout |
| README at snapshot | <https://github.com/opendatalab/MinerU/blob/79d6d8d79fb8f3ddba5cc34c07a16f0ec36f56c7/README.md> | Feature inventory and release history |
| License at snapshot | <https://github.com/opendatalab/MinerU/blob/79d6d8d79fb8f3ddba5cc34c07a16f0ec36f56c7/LICENSE.md> | Custom Apache-2.0-derived terms, thresholds, and attribution obligation |
| Package manifest | <https://github.com/opendatalab/MinerU/blob/79d6d8d79fb8f3ddba5cc34c07a16f0ec36f56c7/pyproject.toml> | Optional dependency groups, supported Python versions, entry points, and test configuration |
| Quick usage | <https://github.com/opendatalab/MinerU/blob/79d6d8d79fb8f3ddba5cc34c07a16f0ec36f56c7/docs/en/usage/quick_usage.md> | Local/remote execution, async tasks, health, router, and model configuration |
| CLI tools | <https://github.com/opendatalab/MinerU/blob/79d6d8d79fb8f3ddba5cc34c07a16f0ec36f56c7/docs/en/usage/cli_tools.md> | Input, page-range, backend, output, OCR, formula, and table controls |
| Advanced CLI | <https://github.com/opendatalab/MinerU/blob/79d6d8d79fb8f3ddba5cc34c07a16f0ec36f56c7/docs/en/usage/advanced_cli_parameters.md> | Accelerator selection and inference-engine pass-through |
| Output files | <https://github.com/opendatalab/MinerU/blob/79d6d8d79fb8f3ddba5cc34c07a16f0ec36f56c7/docs/en/reference/output_files.md> | Intermediate representation, content list, debug overlays, coordinates, and artifacts |
| Model source configuration | <https://github.com/opendatalab/MinerU/blob/79d6d8d79fb8f3ddba5cc34c07a16f0ec36f56c7/docs/en/usage/model_source.md> | Cache reuse, automatic source selection, and offline model paths |
| Backend directory | <https://github.com/opendatalab/MinerU/tree/79d6d8d79fb8f3ddba5cc34c07a16f0ec36f56c7/mineru/backend> | Pipeline, VLM, hybrid, Office, and shared output stages |
| API implementation | <https://github.com/opendatalab/MinerU/blob/79d6d8d79fb8f3ddba5cc34c07a16f0ec36f56c7/mineru/cli/fast_api.py> | Task lifecycle, limits, result packaging, and service boundary |
| Router implementation | <https://github.com/opendatalab/MinerU/blob/79d6d8d79fb8f3ddba5cc34c07a16f0ec36f56c7/mineru/cli/router.py> | Multi-worker routing and local/remote worker management |
| Public HTTP client policy | <https://github.com/opendatalab/MinerU/blob/79d6d8d79fb8f3ddba5cc34c07a16f0ec36f56c7/mineru/cli/public_http_client_policy.py> | Public-bind guard for caller-selected inference endpoints and SSRF considerations |
| Latest release | <https://github.com/opendatalab/MinerU/releases/tag/mineru-3.4.4-released> | Version and recent font/duplicate-glyph hardening |

## Benchmarks and technical reports

| Source | URL | Used for |
| ----------------------- | --------------------------------------------- | ------------------------------------------------------------------ |
| MinerU technical report | <https://arxiv.org/abs/2409.18839> | Original pipeline motivation and evaluation context |
| MinerU 2.5 report | <https://arxiv.org/abs/2509.22186> | VLM architecture evolution |
| OmniDocBench repository | <https://github.com/opendatalab/OmniDocBench> | Reproducible evaluation dimensions and current dataset information |
| OmniDocBench paper | <https://arxiv.org/abs/2412.07626> | Benchmark design and annotations |
| OHR-Bench repository | <https://github.com/opendatalab/OHR-Bench> | Downstream RAG impact of OCR errors |

Benchmark scores quoted by MinerU are upstream claims, not results reproduced by
this case study. The roadmap requires web-capture to publish its own pinned
results before making comparative accuracy claims.

## web-capture sources

| Source | URL or path | Used for |
| --------------------------- | ------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| Repository | <https://github.com/link-assistant/web-capture> | Project purpose and current code |
| Root README | [`README.md`](../../../README.md) | Current formats, endpoints, image policies, and parity promise |
| Architecture | [`ARCHITECTURE.md`](../../../ARCHITECTURE.md) | Current browser pipeline, deployment, security notes, and known gaps |
| JavaScript package | [`js/package.json`](../../../js/package.json) | Runtime, dependencies, checks, version, and Unlicense declaration |
| Rust package | [`rust/Cargo.toml`](../../../rust/Cargo.toml) | Runtime, dependencies, lints, version, and Unlicense declaration |
| JS README | [`js/README.md`](../../../js/README.md) | JS CLI/API contract and development commands |
| Rust README | [`rust/README.md`](../../../rust/README.md) | Rust CLI/API contract and development commands |
| Parity script | [`scripts/check-js-rust-parity.mjs`](../../../scripts/check-js-rust-parity.mjs) | Existing source/test parity guard |
| Browserbase precedent | [`docs/case-studies/issue-127/README.md`](../issue-127/README.md) | Comparison-study scope and evidence style |
| FormalAI contract precedent | <https://github.com/link-assistant/web-capture/pull/136> | Contract-first documentation precedent |

## Archived metadata

The `data/` directory preserves compact, machine-readable snapshots for:

- issue 143 and its comments;
- PR 146 conversation comments, review comments, and reviews;
- MinerU repository and latest release metadata;
- OmniDocBench and web-capture repository metadata;
- recent merged web-capture PRs; and
- the initial CI runs on PR 146.

No screenshots or issue attachments existed to download. No authenticated MinerU
cloud or model-backed run was attempted: the issue asks for transferable
practices, and a model download would not validate a Rust/JavaScript design.
2 changes: 1 addition & 1 deletion rust/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading