| docs: organize research papers and unify multilingual citations (#18357) * docs: organize research papers and unify multilingual citations * ci: retry PaddleX installation and stop GPU tests on setup failure Retry PaddleX installation up to three times with 10s and 20s backoff. Stop the container script when environment setup fails so pytest does not run without required dependencies. Preserve the explicit diagnostic for an unrecognized PaddleX requirement. Validation: YAML parsing, bash syntax, git diff --check, and six simulated setup scenarios including retry success, retry exhaustion, early dependency failure, and import failure. * ci: build PaddleX wheel on hosted runner for GPU tests The GPU container repeatedly fails to clone PaddleX from GitHub even after retries. Build the same release-branch source as a wheel on ubuntu-latest, transfer it within the workflow using an artifact, and mount it read-only into the GPU container for installation. Preserve dependency resolution, retries, fail-fast behavior, and the required GPU check. Validation: built paddlex-3.7.2-py3-none-any.whl from release/3.7; checked wheel metadata, YAML and shell syntax, artifact wiring, three preparation scenarios, and five GPU setup scenarios. Full GPU validation runs in CI. | 28 days ago |
| [Feat] Support PP-OCRv6 (#18104) * Fix bugs * Fix for python3.8 * Fix mcp server * Optimize * Fix bugs * Refactor * Fix MCP * Bump MCP to 0.8.1 * Fix bugs * Bump version to 0.8.2 * Fix bugs and update docs * Update docs and fix bugs * Fix bugs * update pp-ocrv6 * update pp-ocrv6 # Conflicts: # docs/version3.x/module_usage/text_detection.md # docs/version3.x/module_usage/text_recognition.md # docs/version3.x/pipeline_usage/OCR.md # paddleocr/_api_client/models.py # paddleocr/_pipelines/ocr.py * Bump paddleocr version * update PP-OCRv6 docs: add model metrics, fix sizes, update language count to 50 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update PP-OCRv6: add model metrics/sizes to docs, support az/ku languages - Add PP-OCRv6 model precision, sizes, descriptions to doc tables - Add OCR pipeline introduction for PP-OCRv6 - Remove az/ku from unsupported latin langs (dict covers them) - Update language count: 48->50 (medium/small), 47->49 (tiny) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Change languages * Bump js version * add PP-OCRv6 English docs: algorithm doc + update model tables Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Use default model * Update doc * Update mcp docs * update PP-OCRv6 algorithm docs and mkdocs nav: sync speed table with paper Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Support more params * Fix MCP * update READMEs and index docs: PP-OCRv5 -> PP-OCRv6 features Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update sdk * Fix bugs * Fix unsaved * Bump versions * Fix bugs * updata readme --------- Co-authored-by: weixin_46524038 <weixin_46524038@noreply.gitcode.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: zhangyubo0722 <zhangyubo0722@163.com> | 4 months ago |
| docs: fixed broken urls (#16591) * docs: fixed broken urls * docs: fixed broken urls | 1 year ago |
| fix: use safe YAML loaders for config parsing (#17930) * fix: use safe yaml loaders for config parsing * test: restore YAML stubs after tests --------- Co-authored-by: Tao Luo <luotao02@baidu.com> Co-authored-by: Lin Manhui <mhlin425@whu.edu.cn> | 4 months ago |
| [Feat] Support PP-OCRv6 (#18104) * Fix bugs * Fix for python3.8 * Fix mcp server * Optimize * Fix bugs * Refactor * Fix MCP * Bump MCP to 0.8.1 * Fix bugs * Bump version to 0.8.2 * Fix bugs and update docs * Update docs and fix bugs * Fix bugs * update pp-ocrv6 * update pp-ocrv6 # Conflicts: # docs/version3.x/module_usage/text_detection.md # docs/version3.x/module_usage/text_recognition.md # docs/version3.x/pipeline_usage/OCR.md # paddleocr/_api_client/models.py # paddleocr/_pipelines/ocr.py * Bump paddleocr version * update PP-OCRv6 docs: add model metrics, fix sizes, update language count to 50 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update PP-OCRv6: add model metrics/sizes to docs, support az/ku languages - Add PP-OCRv6 model precision, sizes, descriptions to doc tables - Add OCR pipeline introduction for PP-OCRv6 - Remove az/ku from unsupported latin langs (dict covers them) - Update language count: 48->50 (medium/small), 47->49 (tiny) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Change languages * Bump js version * add PP-OCRv6 English docs: algorithm doc + update model tables Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Use default model * Update doc * Update mcp docs * update PP-OCRv6 algorithm docs and mkdocs nav: sync speed table with paper Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Support more params * Fix MCP * update READMEs and index docs: PP-OCRv5 -> PP-OCRv6 features Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update sdk * Fix bugs * Fix unsaved * Bump versions * Fix bugs * updata readme --------- Co-authored-by: weixin_46524038 <weixin_46524038@noreply.gitcode.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: zhangyubo0722 <zhangyubo0722@163.com> | 4 months ago |
| [Feat] Support PP-OCRv6 (#18104) * Fix bugs * Fix for python3.8 * Fix mcp server * Optimize * Fix bugs * Refactor * Fix MCP * Bump MCP to 0.8.1 * Fix bugs * Bump version to 0.8.2 * Fix bugs and update docs * Update docs and fix bugs * Fix bugs * update pp-ocrv6 * update pp-ocrv6 # Conflicts: # docs/version3.x/module_usage/text_detection.md # docs/version3.x/module_usage/text_recognition.md # docs/version3.x/pipeline_usage/OCR.md # paddleocr/_api_client/models.py # paddleocr/_pipelines/ocr.py * Bump paddleocr version * update PP-OCRv6 docs: add model metrics, fix sizes, update language count to 50 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update PP-OCRv6: add model metrics/sizes to docs, support az/ku languages - Add PP-OCRv6 model precision, sizes, descriptions to doc tables - Add OCR pipeline introduction for PP-OCRv6 - Remove az/ku from unsupported latin langs (dict covers them) - Update language count: 48->50 (medium/small), 47->49 (tiny) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Change languages * Bump js version * add PP-OCRv6 English docs: algorithm doc + update model tables Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Use default model * Update doc * Update mcp docs * update PP-OCRv6 algorithm docs and mkdocs nav: sync speed table with paper Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Support more params * Fix MCP * update READMEs and index docs: PP-OCRv5 -> PP-OCRv6 features Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update sdk * Fix bugs * Fix unsaved * Bump versions * Fix bugs * updata readme --------- Co-authored-by: weixin_46524038 <weixin_46524038@noreply.gitcode.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: zhangyubo0722 <zhangyubo0722@163.com> | 4 months ago |
| update the homepage content of i18n to the new site (#14166) * docs: fixed error image link (#14164) * docs: move others language page to docs site * docs: update ppstructure README | 1 year ago |
| docs: deduplicate images and streamline repository cloning (#18359) | 28 days ago |
| [Feat] Support PP-OCRv6 (#18104) * Fix bugs * Fix for python3.8 * Fix mcp server * Optimize * Fix bugs * Refactor * Fix MCP * Bump MCP to 0.8.1 * Fix bugs * Bump version to 0.8.2 * Fix bugs and update docs * Update docs and fix bugs * Fix bugs * update pp-ocrv6 * update pp-ocrv6 # Conflicts: # docs/version3.x/module_usage/text_detection.md # docs/version3.x/module_usage/text_recognition.md # docs/version3.x/pipeline_usage/OCR.md # paddleocr/_api_client/models.py # paddleocr/_pipelines/ocr.py * Bump paddleocr version * update PP-OCRv6 docs: add model metrics, fix sizes, update language count to 50 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update PP-OCRv6: add model metrics/sizes to docs, support az/ku languages - Add PP-OCRv6 model precision, sizes, descriptions to doc tables - Add OCR pipeline introduction for PP-OCRv6 - Remove az/ku from unsupported latin langs (dict covers them) - Update language count: 48->50 (medium/small), 47->49 (tiny) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Change languages * Bump js version * add PP-OCRv6 English docs: algorithm doc + update model tables Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Use default model * Update doc * Update mcp docs * update PP-OCRv6 algorithm docs and mkdocs nav: sync speed table with paper Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Support more params * Fix MCP * update READMEs and index docs: PP-OCRv5 -> PP-OCRv6 features Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update sdk * Fix bugs * Fix unsaved * Bump versions * Fix bugs * updata readme --------- Co-authored-by: weixin_46524038 <weixin_46524038@noreply.gitcode.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: zhangyubo0722 <zhangyubo0722@163.com> | 4 months ago |
| [Feat] Support PP-OCRv6 (#18104) * Fix bugs * Fix for python3.8 * Fix mcp server * Optimize * Fix bugs * Refactor * Fix MCP * Bump MCP to 0.8.1 * Fix bugs * Bump version to 0.8.2 * Fix bugs and update docs * Update docs and fix bugs * Fix bugs * update pp-ocrv6 * update pp-ocrv6 # Conflicts: # docs/version3.x/module_usage/text_detection.md # docs/version3.x/module_usage/text_recognition.md # docs/version3.x/pipeline_usage/OCR.md # paddleocr/_api_client/models.py # paddleocr/_pipelines/ocr.py * Bump paddleocr version * update PP-OCRv6 docs: add model metrics, fix sizes, update language count to 50 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update PP-OCRv6: add model metrics/sizes to docs, support az/ku languages - Add PP-OCRv6 model precision, sizes, descriptions to doc tables - Add OCR pipeline introduction for PP-OCRv6 - Remove az/ku from unsupported latin langs (dict covers them) - Update language count: 48->50 (medium/small), 47->49 (tiny) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Change languages * Bump js version * add PP-OCRv6 English docs: algorithm doc + update model tables Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Use default model * Update doc * Update mcp docs * update PP-OCRv6 algorithm docs and mkdocs nav: sync speed table with paper Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Support more params * Fix MCP * update READMEs and index docs: PP-OCRv5 -> PP-OCRv6 features Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update sdk * Fix bugs * Fix unsaved * Bump versions * Fix bugs * updata readme --------- Co-authored-by: weixin_46524038 <weixin_46524038@noreply.gitcode.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: zhangyubo0722 <zhangyubo0722@163.com> | 4 months ago |
| docs: add dynamic reminder for article expiration notifications (#16567) * docs: add dynamic reminder for article expiration notifications * docs: update expiry_days from 180 to 365 * docs: add newline | 1 year ago |
| [Feat] Support PP-OCRv6 (#18104) * Fix bugs * Fix for python3.8 * Fix mcp server * Optimize * Fix bugs * Refactor * Fix MCP * Bump MCP to 0.8.1 * Fix bugs * Bump version to 0.8.2 * Fix bugs and update docs * Update docs and fix bugs * Fix bugs * update pp-ocrv6 * update pp-ocrv6 # Conflicts: # docs/version3.x/module_usage/text_detection.md # docs/version3.x/module_usage/text_recognition.md # docs/version3.x/pipeline_usage/OCR.md # paddleocr/_api_client/models.py # paddleocr/_pipelines/ocr.py * Bump paddleocr version * update PP-OCRv6 docs: add model metrics, fix sizes, update language count to 50 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update PP-OCRv6: add model metrics/sizes to docs, support az/ku languages - Add PP-OCRv6 model precision, sizes, descriptions to doc tables - Add OCR pipeline introduction for PP-OCRv6 - Remove az/ku from unsupported latin langs (dict covers them) - Update language count: 48->50 (medium/small), 47->49 (tiny) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Change languages * Bump js version * add PP-OCRv6 English docs: algorithm doc + update model tables Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Use default model * Update doc * Update mcp docs * update PP-OCRv6 algorithm docs and mkdocs nav: sync speed table with paper Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Support more params * Fix MCP * update READMEs and index docs: PP-OCRv5 -> PP-OCRv6 features Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update sdk * Fix bugs * Fix unsaved * Bump versions * Fix bugs * updata readme --------- Co-authored-by: weixin_46524038 <weixin_46524038@noreply.gitcode.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: zhangyubo0722 <zhangyubo0722@163.com> | 4 months ago |
| [Feat] Support PP-OCRv6 (#18104) * Fix bugs * Fix for python3.8 * Fix mcp server * Optimize * Fix bugs * Refactor * Fix MCP * Bump MCP to 0.8.1 * Fix bugs * Bump version to 0.8.2 * Fix bugs and update docs * Update docs and fix bugs * Fix bugs * update pp-ocrv6 * update pp-ocrv6 # Conflicts: # docs/version3.x/module_usage/text_detection.md # docs/version3.x/module_usage/text_recognition.md # docs/version3.x/pipeline_usage/OCR.md # paddleocr/_api_client/models.py # paddleocr/_pipelines/ocr.py * Bump paddleocr version * update PP-OCRv6 docs: add model metrics, fix sizes, update language count to 50 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update PP-OCRv6: add model metrics/sizes to docs, support az/ku languages - Add PP-OCRv6 model precision, sizes, descriptions to doc tables - Add OCR pipeline introduction for PP-OCRv6 - Remove az/ku from unsupported latin langs (dict covers them) - Update language count: 48->50 (medium/small), 47->49 (tiny) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Change languages * Bump js version * add PP-OCRv6 English docs: algorithm doc + update model tables Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Use default model * Update doc * Update mcp docs * update PP-OCRv6 algorithm docs and mkdocs nav: sync speed table with paper Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Support more params * Fix MCP * update READMEs and index docs: PP-OCRv5 -> PP-OCRv6 features Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update sdk * Fix bugs * Fix unsaved * Bump versions * Fix bugs * updata readme --------- Co-authored-by: weixin_46524038 <weixin_46524038@noreply.gitcode.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: zhangyubo0722 <zhangyubo0722@163.com> | 4 months ago |
| [Feat] Support PP-OCRv6 (#18104) * Fix bugs * Fix for python3.8 * Fix mcp server * Optimize * Fix bugs * Refactor * Fix MCP * Bump MCP to 0.8.1 * Fix bugs * Bump version to 0.8.2 * Fix bugs and update docs * Update docs and fix bugs * Fix bugs * update pp-ocrv6 * update pp-ocrv6 # Conflicts: # docs/version3.x/module_usage/text_detection.md # docs/version3.x/module_usage/text_recognition.md # docs/version3.x/pipeline_usage/OCR.md # paddleocr/_api_client/models.py # paddleocr/_pipelines/ocr.py * Bump paddleocr version * update PP-OCRv6 docs: add model metrics, fix sizes, update language count to 50 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update PP-OCRv6: add model metrics/sizes to docs, support az/ku languages - Add PP-OCRv6 model precision, sizes, descriptions to doc tables - Add OCR pipeline introduction for PP-OCRv6 - Remove az/ku from unsupported latin langs (dict covers them) - Update language count: 48->50 (medium/small), 47->49 (tiny) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Change languages * Bump js version * add PP-OCRv6 English docs: algorithm doc + update model tables Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Use default model * Update doc * Update mcp docs * update PP-OCRv6 algorithm docs and mkdocs nav: sync speed table with paper Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Support more params * Fix MCP * update READMEs and index docs: PP-OCRv5 -> PP-OCRv6 features Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update sdk * Fix bugs * Fix unsaved * Bump versions * Fix bugs * updata readme --------- Co-authored-by: weixin_46524038 <weixin_46524038@noreply.gitcode.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: zhangyubo0722 <zhangyubo0722@163.com> | 4 months ago |
| Add Python 3.13 and 3.14 support (#17826) * Add Python 3.13 support - Replace distutils imports with sysconfig/shutil/logging in ultra-infer setup - Replace pkg_resources with importlib.metadata in ultra-infer __init__ - Remove np.unicode_ usage (removed in NumPy 2.0, crashes on Python 3.13+) - Remove dead inspect.getargspec fallback (removed in 3.11) - Add python_requires=">=3.8" and Python 3.13 classifier to setup.py - Update Python version badges and docs from 3.8~3.12 to 3.8~3.13 - Pin PaddlePaddle to ==3.3.0 in install docs (first version with cp313 wheels) * CI: test Python bounds (3.8, 3.13) and revert HPI docs - CI matrix: test lower bound (3.8) and upper bound (3.13) per reviewer suggestion, with version-conditional PaddlePaddle install (3.2.0 for cp38, 3.3.0 for cp313) - Revert HPI docs to Python 3.8-3.12 since the package is separately compiled and does not yet support 3.13 * CI: add Python 3.9 to test matrix Test 3.9 as the lower bound for PaddlePaddle 3.3.0 (cp39-cp313). * Revert PaddlePaddle version bumps in docs due to 3.3.0 CPU inference bug Keep Python version range updates (3.8-3.13) but revert paddlepaddle install versions to their originals since 3.3.0 CPU native inference has a bug for paddleocr models. * Bump langchain-paddleocr version to 0.1.1 for Python 3.13+ support --------- Co-authored-by: Lin Manhui <mhlin425@whu.edu.cn> | 6 months ago |
| docs: organize research papers and unify multilingual citations (#18357) * docs: organize research papers and unify multilingual citations * ci: retry PaddleX installation and stop GPU tests on setup failure Retry PaddleX installation up to three times with 10s and 20s backoff. Stop the container script when environment setup fails so pytest does not run without required dependencies. Preserve the explicit diagnostic for an unrecognized PaddleX requirement. Validation: YAML parsing, bash syntax, git diff --check, and six simulated setup scenarios including retry success, retry exhaustion, early dependency failure, and import failure. * ci: build PaddleX wheel on hosted runner for GPU tests The GPU container repeatedly fails to clone PaddleX from GitHub even after retries. Build the same release-branch source as a wheel on ubuntu-latest, transfer it within the workflow using an artifact, and mount it read-only into the GPU container for installation. Preserve dependency resolution, retries, fail-fast behavior, and the required GPU check. Validation: built paddlex-3.7.2-py3-none-any.whl from release/3.7; checked wheel metadata, YAML and shell syntax, artifact wiring, three preparation scenarios, and five GPU setup scenarios. Full GPU validation runs in CI. | 28 days ago |
| [Feat] Refactor MCP server to use Python SDK (#18098) * refactor(mcp): add Executor base class and module structure Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(code quality): rename TimeoutError and remove unnecessary pass statements - Rename TimeoutError to ExecutionTimeoutError to avoid shadowing built-in exception - Remove unnecessary pass statements from exception classes and abstract methods Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor(mcp): add HTTPExecutor base class for synchronous HTTP APIs * feat(mcp): add AIStudioExecutor using AsyncPaddleOCRClient Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor(mcp): add LocalExecutor for local inference - Add LocalExecutor class for local PaddleOCR inference - Add _EngineWrapper to run synchronous engine in async context - Support all pipeline types: OCR, PP-StructureV3, PaddleOCR-VL series - Handle file path, URL, and Base64 input formats Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor(mcp): add QianfanExecutor and SelfHostedExecutor - QianfanExecutor: Bearer token authentication, "paddleocr" endpoint - SelfHostedExecutor: No authentication, "ocr"/"layout-parsing" endpoints - Both inherit HTTPExecutor with unified response parsing Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor(mcp): add executor factory function Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor(mcp): add capabilities module with OCR and layout parsing Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor(mcp): fix type hints and remove pass statements in capabilities * refactor(mcp): update __main__.py to use new architecture * refactor(mcp): update copyright year to 2026 * refactor(mcp): add type hint to main() function * chore(mcp): bump version to 0.7.0 * refactor(mcp): remove old pipelines.py * docs(mcp): update docs for v0.7.0 SDK-based architecture - Remove PADDLEOCR_MCP_SERVER_URL for aistudio mode (SDK has built-in default) - Add optional PADDLEOCR_MCP_BASE_URL for custom AI Studio base URL - Update parameter reference table * Update code * fix(mcp): fix AIStudioExecutor SDK integration - Use PPStructureV3Options for PP-StructureV3 pipeline - Use PaddleOCRVLOptions for PaddleOCR-VL series - Fix DocParsingPage attribute names (markdown_text, markdown_images) * refactor(mcp): rename layout to doc_parsing - Rename layout.py to doc_parsing.py - Rename LayoutParsingCapability to DocParsingCapability - Rename _parse_layout_response_http to _parse_doc_parsing_response_http - Rename _parse_layout_result to _parse_doc_parsing_result - Remove file path comments from all Python files * docs(mcp): make DocParsingCapability docstring more generic - Change from listing specific pipelines to "e.g." style - Make tool_name description more generic for future extensibility * remove unused files * docs(mcp): update terminology and remove obsolete URL configuration - Change '工作模式' to '推理方式' / 'Inference methods' - Unify with SDK docs: use '官方 API' / 'Official API' - Update options: 本地推理、官方API、千帆API、自建API - Remove obsolete manual URL configuration (SDK has built-in defaults) - Update token acquisition instructions * docs(mcp): unify English doc terminology - working modes/mode → inference methods/method/API - Update TOC: 'Working Modes Explained' → 'Inference Methods' - Change 'Mode 1: Local Python Library' → 'Method 1: Local Inference' - Update parameter table: 'mode' → 'source', 'service' → 'API' - 'local Python library' → 'local inference' - 'PaddleOCR official service' → 'Official API' - 'Qianfan platform service' → 'Qianfan API' - 'self-hosted service' → 'Self-hosted API' - Update example command comments - Update 'Local mode' → 'Local Inference' in uvx section - Update Known Limitations section * fix(mcp): correct inaccuracies and unify terminology in docs and code - Remove incorrect Qianfan pipeline validation (OCR is supported) - Fix broken anchor link in Chinese doc 2.4 section - Unify Chinese doc terminology: - 千帆平台服务/自托管服务 → 千帆 API/自建 API - PaddleOCR 官方服务 → 官方 API - 本地 Python 库模式 → 本地推理 - 模式/方式 → 推理方式 - Fix Chinese doc numbered list error (5 → 4) - Remove incorrect Qianfan pipeline limitation note from English doc - Update example command comments to use consistent terminology * docs(mcp): simplify pipeline documentation and remove hardcoded lists - Replace Chinese docstrings with English in base.py - Remove hardcoded pipeline enumeration from AIStudioExecutor docstring - Simplify pipeline table: merge PaddleOCR-VL series into single entry - Add 'etc.' to parameter options to indicate extensibility * Fix bugs * refactor(mcp): let SDK use service-side defaults - Remove hardcoded parameter defaults (use_doc_orientation_classify=False, etc.) - Only set visualize=False (MCP tool never returns visualizations) - Pass-through all optional parameters from user options dict - This allows server-side optimizations and better future compatibility * feat(mcp): add reasonable default options - All pipelines: use_doc_orientation_classify=False, use_doc_unwarping=False - PP-StructureV3: use_chart_recognition=True - PaddleOCR-VL series: use_chart_recognition=True, use_seal_recognition=True - Users can override these defaults via options dict * refactor(mcp): move default options to MCPCapability - Move default options from AIStudioExecutor to MCPCapability._process - All executors now receive same default behavior via capability layer - User options override defaults - Add pipeline parameter to MCPCapability and subclasses * refactor(mcp): redesign capabilities as pipeline-level classes - MCPCapability: add PIPELINE class attribute, remove constructor param - BaseDocParsingCapability: new base class for doc parsing pipelines - PPStructureV3Capability: dedicated class for PP-StructureV3 - PaddleOCRVLCapability: handles PaddleOCR-VL series with pipeline param - OCRCapability: define PIPELINE as class attribute - Remove old DocParsingCapability (replaced by specific classes) - Factory simplified: no need to pass pipeline to constructors * refactor(mcp): use method for default options instead of hardcoded logic - MCPCapability: add DEFAULT_OPTIONS constant and get_default_options method - BaseDocParsingCapability: override get_default_options for chart recognition - PaddleOCRVLCapability: override get_default_options for seal recognition - Move default logic from hardcoded if/else to method inheritance - PaddleOCRVLCapability: set PIPELINE dynamically in __init__ * Big refactor * Fix bugs * Remove tests * Remove unused comments * Fix doc bugs --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> | 4 months ago |
| fix: use safe YAML loaders for config parsing (#17930) * fix: use safe yaml loaders for config parsing * test: restore YAML stubs after tests --------- Co-authored-by: Tao Luo <luotao02@baidu.com> Co-authored-by: Lin Manhui <mhlin425@whu.edu.cn> | 4 months ago |
| [Feat] Support PP-OCRv6 (#18104) * Fix bugs * Fix for python3.8 * Fix mcp server * Optimize * Fix bugs * Refactor * Fix MCP * Bump MCP to 0.8.1 * Fix bugs * Bump version to 0.8.2 * Fix bugs and update docs * Update docs and fix bugs * Fix bugs * update pp-ocrv6 * update pp-ocrv6 # Conflicts: # docs/version3.x/module_usage/text_detection.md # docs/version3.x/module_usage/text_recognition.md # docs/version3.x/pipeline_usage/OCR.md # paddleocr/_api_client/models.py # paddleocr/_pipelines/ocr.py * Bump paddleocr version * update PP-OCRv6 docs: add model metrics, fix sizes, update language count to 50 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update PP-OCRv6: add model metrics/sizes to docs, support az/ku languages - Add PP-OCRv6 model precision, sizes, descriptions to doc tables - Add OCR pipeline introduction for PP-OCRv6 - Remove az/ku from unsupported latin langs (dict covers them) - Update language count: 48->50 (medium/small), 47->49 (tiny) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Change languages * Bump js version * add PP-OCRv6 English docs: algorithm doc + update model tables Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Use default model * Update doc * Update mcp docs * update PP-OCRv6 algorithm docs and mkdocs nav: sync speed table with paper Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Support more params * Fix MCP * update READMEs and index docs: PP-OCRv5 -> PP-OCRv6 features Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update sdk * Fix bugs * Fix unsaved * Bump versions * Fix bugs * updata readme --------- Co-authored-by: weixin_46524038 <weixin_46524038@noreply.gitcode.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: zhangyubo0722 <zhangyubo0722@163.com> | 4 months ago |
| [Feat] Support PP-OCRv6 (#18104) * Fix bugs * Fix for python3.8 * Fix mcp server * Optimize * Fix bugs * Refactor * Fix MCP * Bump MCP to 0.8.1 * Fix bugs * Bump version to 0.8.2 * Fix bugs and update docs * Update docs and fix bugs * Fix bugs * update pp-ocrv6 * update pp-ocrv6 # Conflicts: # docs/version3.x/module_usage/text_detection.md # docs/version3.x/module_usage/text_recognition.md # docs/version3.x/pipeline_usage/OCR.md # paddleocr/_api_client/models.py # paddleocr/_pipelines/ocr.py * Bump paddleocr version * update PP-OCRv6 docs: add model metrics, fix sizes, update language count to 50 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update PP-OCRv6: add model metrics/sizes to docs, support az/ku languages - Add PP-OCRv6 model precision, sizes, descriptions to doc tables - Add OCR pipeline introduction for PP-OCRv6 - Remove az/ku from unsupported latin langs (dict covers them) - Update language count: 48->50 (medium/small), 47->49 (tiny) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Change languages * Bump js version * add PP-OCRv6 English docs: algorithm doc + update model tables Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Use default model * Update doc * Update mcp docs * update PP-OCRv6 algorithm docs and mkdocs nav: sync speed table with paper Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Support more params * Fix MCP * update READMEs and index docs: PP-OCRv5 -> PP-OCRv6 features Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update sdk * Fix bugs * Fix unsaved * Bump versions * Fix bugs * updata readme --------- Co-authored-by: weixin_46524038 <weixin_46524038@noreply.gitcode.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: zhangyubo0722 <zhangyubo0722@163.com> | 4 months ago |
| keep same version of clang-format with paddle (#9286) * support min_area_rect crop * add check_install * fix requirement.txt * fix check_install * add lanms-neo for drrg * fix * fix doc * fix * support set gpu_id when inference * fix #8855 * fix #8855 * opt slim doc * fix doc bug * fix east postprocess * keep same version of clang-format with paddle | 3 years ago |
| [Feat] Refactor MCP server to use Python SDK (#18098) * refactor(mcp): add Executor base class and module structure Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(code quality): rename TimeoutError and remove unnecessary pass statements - Rename TimeoutError to ExecutionTimeoutError to avoid shadowing built-in exception - Remove unnecessary pass statements from exception classes and abstract methods Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor(mcp): add HTTPExecutor base class for synchronous HTTP APIs * feat(mcp): add AIStudioExecutor using AsyncPaddleOCRClient Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor(mcp): add LocalExecutor for local inference - Add LocalExecutor class for local PaddleOCR inference - Add _EngineWrapper to run synchronous engine in async context - Support all pipeline types: OCR, PP-StructureV3, PaddleOCR-VL series - Handle file path, URL, and Base64 input formats Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor(mcp): add QianfanExecutor and SelfHostedExecutor - QianfanExecutor: Bearer token authentication, "paddleocr" endpoint - SelfHostedExecutor: No authentication, "ocr"/"layout-parsing" endpoints - Both inherit HTTPExecutor with unified response parsing Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor(mcp): add executor factory function Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor(mcp): add capabilities module with OCR and layout parsing Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor(mcp): fix type hints and remove pass statements in capabilities * refactor(mcp): update __main__.py to use new architecture * refactor(mcp): update copyright year to 2026 * refactor(mcp): add type hint to main() function * chore(mcp): bump version to 0.7.0 * refactor(mcp): remove old pipelines.py * docs(mcp): update docs for v0.7.0 SDK-based architecture - Remove PADDLEOCR_MCP_SERVER_URL for aistudio mode (SDK has built-in default) - Add optional PADDLEOCR_MCP_BASE_URL for custom AI Studio base URL - Update parameter reference table * Update code * fix(mcp): fix AIStudioExecutor SDK integration - Use PPStructureV3Options for PP-StructureV3 pipeline - Use PaddleOCRVLOptions for PaddleOCR-VL series - Fix DocParsingPage attribute names (markdown_text, markdown_images) * refactor(mcp): rename layout to doc_parsing - Rename layout.py to doc_parsing.py - Rename LayoutParsingCapability to DocParsingCapability - Rename _parse_layout_response_http to _parse_doc_parsing_response_http - Rename _parse_layout_result to _parse_doc_parsing_result - Remove file path comments from all Python files * docs(mcp): make DocParsingCapability docstring more generic - Change from listing specific pipelines to "e.g." style - Make tool_name description more generic for future extensibility * remove unused files * docs(mcp): update terminology and remove obsolete URL configuration - Change '工作模式' to '推理方式' / 'Inference methods' - Unify with SDK docs: use '官方 API' / 'Official API' - Update options: 本地推理、官方API、千帆API、自建API - Remove obsolete manual URL configuration (SDK has built-in defaults) - Update token acquisition instructions * docs(mcp): unify English doc terminology - working modes/mode → inference methods/method/API - Update TOC: 'Working Modes Explained' → 'Inference Methods' - Change 'Mode 1: Local Python Library' → 'Method 1: Local Inference' - Update parameter table: 'mode' → 'source', 'service' → 'API' - 'local Python library' → 'local inference' - 'PaddleOCR official service' → 'Official API' - 'Qianfan platform service' → 'Qianfan API' - 'self-hosted service' → 'Self-hosted API' - Update example command comments - Update 'Local mode' → 'Local Inference' in uvx section - Update Known Limitations section * fix(mcp): correct inaccuracies and unify terminology in docs and code - Remove incorrect Qianfan pipeline validation (OCR is supported) - Fix broken anchor link in Chinese doc 2.4 section - Unify Chinese doc terminology: - 千帆平台服务/自托管服务 → 千帆 API/自建 API - PaddleOCR 官方服务 → 官方 API - 本地 Python 库模式 → 本地推理 - 模式/方式 → 推理方式 - Fix Chinese doc numbered list error (5 → 4) - Remove incorrect Qianfan pipeline limitation note from English doc - Update example command comments to use consistent terminology * docs(mcp): simplify pipeline documentation and remove hardcoded lists - Replace Chinese docstrings with English in base.py - Remove hardcoded pipeline enumeration from AIStudioExecutor docstring - Simplify pipeline table: merge PaddleOCR-VL series into single entry - Add 'etc.' to parameter options to indicate extensibility * Fix bugs * refactor(mcp): let SDK use service-side defaults - Remove hardcoded parameter defaults (use_doc_orientation_classify=False, etc.) - Only set visualize=False (MCP tool never returns visualizations) - Pass-through all optional parameters from user options dict - This allows server-side optimizations and better future compatibility * feat(mcp): add reasonable default options - All pipelines: use_doc_orientation_classify=False, use_doc_unwarping=False - PP-StructureV3: use_chart_recognition=True - PaddleOCR-VL series: use_chart_recognition=True, use_seal_recognition=True - Users can override these defaults via options dict * refactor(mcp): move default options to MCPCapability - Move default options from AIStudioExecutor to MCPCapability._process - All executors now receive same default behavior via capability layer - User options override defaults - Add pipeline parameter to MCPCapability and subclasses * refactor(mcp): redesign capabilities as pipeline-level classes - MCPCapability: add PIPELINE class attribute, remove constructor param - BaseDocParsingCapability: new base class for doc parsing pipelines - PPStructureV3Capability: dedicated class for PP-StructureV3 - PaddleOCRVLCapability: handles PaddleOCR-VL series with pipeline param - OCRCapability: define PIPELINE as class attribute - Remove old DocParsingCapability (replaced by specific classes) - Factory simplified: no need to pass pipeline to constructors * refactor(mcp): use method for default options instead of hardcoded logic - MCPCapability: add DEFAULT_OPTIONS constant and get_default_options method - BaseDocParsingCapability: override get_default_options for chart recognition - PaddleOCRVLCapability: override get_default_options for seal recognition - Move default logic from hardcoded if/else to method inheritance - PaddleOCRVLCapability: set PIPELINE dynamically in __init__ * Big refactor * Fix bugs * Remove tests * Remove unused comments * Fix doc bugs --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> | 4 months ago |
| docs: fixed broken urls (#16591) * docs: fixed broken urls * docs: fixed broken urls | 1 year ago |
| [Feat] PaddleOCR.js (#17861) * chore: import paddleocr-js subproject skeleton Made-with: Cursor * refactor: rename internal paddleocr-js workspaces Made-with: Cursor * fix: remove stale paddleocr-js workspace lock entries Made-with: Cursor * docs: rewrite paddleocr-js subproject docs Made-with: Cursor * test: fix ocr shared lint regression Made-with: Cursor * chore: add low-coupling paddleocr-js host integration Made-with: Cursor * Update docs * Add langchain-paddleocr to skip gpu condition * Skip subprojects * Update lock * docs(paddleocr-js): add TypeScript migration design spec Made-with: Cursor * docs(paddleocr-js): add TypeScript migration implementation plan Made-with: Cursor * build(paddleocr-js): add TypeScript toolchain and build infrastructure Set up the TypeScript migration foundation: - Add TypeScript, vite-plugin-dts, and type definitions as devDependencies - Create tsconfig.json files (core, test, root project references) - Configure Vite library build with ES/CJS/UMD outputs and .d.ts generation - Update package.json entry points from src/ to dist/ with proper exports map - Replace plain JS ESLint config with typescript-eslint strict type-checked rules - Update Vitest coverage to target .ts files - Add typecheck script, engines, keywords across workspace packages Made-with: Cursor * fix(paddleocr-js): exclude config files from strict TS lint, reorder exports types-first Made-with: Cursor * refactor(paddleocr-js): add third-party type declarations for clipper-lib and opencv Minimal .d.ts files covering only the APIs actually used by the project. Made-with: Cursor * refactor(paddleocr-js): convert Layer 0-1 modules to TypeScript Converts utils/common, worker/protocol, pipelines/ocr/default-config, pipelines/ocr/runtime-params, runtime/opencv, runtime/ort, runtime/index, and models/common from .js to .ts with full type annotations. Made-with: Cursor * refactor(paddleocr-js): convert Layer 2 modules to TypeScript Converts models/det, models/rec, models/index, resources/tar, resources/cache, resources/registry, resources/standard-model, resources/index, platform/browser, and platform/worker from .js to .ts with interfaces for all model configs, results, and platform types. Made-with: Cursor * refactor(paddleocr-js): convert Layer 3-4 modules to TypeScript Converts worker/client, worker/entry, pipelines/ocr/config, pipelines/ocr/shared, pipelines/ocr/core, pipelines/ocr/worker-backed, and pipelines/ocr/worker-entry from .js to .ts with full type annotations for pipeline options, results, and initialization state. Made-with: Cursor * refactor(paddleocr-js): convert Layer 5 modules to TypeScript and add types/index.ts Converts pipelines/ocr/index, pipelines/index, and src/index from .js to .ts. Creates src/types/index.ts re-exporting all public-facing types. Fixes all TypeScript errors (strict mode + verbatimModuleSyntax clean). Made-with: Cursor * refactor(paddleocr-js): convert test files to TypeScript - Renamed all 29 test files from .js to .ts - Added type annotations to test helpers and mocks - Fixed barrel import in core.ts to maintain mock interceptability - Restored createWorker: null in resolveWorkerOptions for API contract - Updated public-api test to import from source directly All 154 tests pass. Made-with: Cursor * fix(paddleocr-js): fix Vite build worker format and demo alias - Add worker.format: 'es' to core vite config (fixes UMD build conflict) - Add resolve alias in demo vite config to resolve paddleocr-js to source Made-with: Cursor * fix(paddleocr-js): resolve all ESLint strict type-checked errors - Remove unnecessary optional chains, type assertions, and type conversions - Remove unused type imports - Fix floating promises, non-Error throws, and catch variable types - Widen SourceToMatFn to accept sync or async returns - Update tests to match sync dispose() and sourcePayloadToMat() 96 lint errors -> 0. All 154 tests pass. Made-with: Cursor * Update docs * Remove AI docs * Update node version bound * Polish typing * Fix bugs * Fix doc * Rename paddleocr-js to @paddleocr/paddleocr-js * FIx CI * Fix CI bug * Fix git workflow * Add viz utility design spec for paddleocr-js Design document for an optional visualization module exported via @paddleocr/paddleocr-js/viz subpath. Renders side-by-side composite images (source + detection boxes | white panel + recognized text) with custom font support and Blob export for browser download. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(viz): add implementation plan for viz utility 11-task TDD plan covering types, color generation, canvas factory, font management, box drawing, text drawing, side-by-side assembly, OcrVisualizer class, subpath entry, build config, and final check. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(viz): add foundational types for viz utility Define RgbColor, FontConfig, BoxStyleOptions, and OcrVisualizerOptions interfaces that will be shared across all viz module files. Include type-level test coverage. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(viz): add deterministic color generation via LCG Extract the Linear Congruential Generator color function from the demo app into the core viz utility so all consumers produce visually consistent box colors for the same detection index. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Add canvas factory abstraction for viz module Provides createCanvas, getContext2D, and canvasToBlob that abstract over OffscreenCanvas vs HTMLCanvasElement differences, enabling the viz module to work in both main-thread and web worker contexts. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Add font management utilities for viz (Task 4) Implement loadFontFace/removeFontFace wrappers around the browser FontFace API, with full test coverage using jsdom mocks. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Add draw-boxes panel for viz module (Task 5) Draws the left panel of the side-by-side OCR visualization: source image overlaid with colored detection box polygons. Uses save/restore for clean state management and supports custom color functions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(viz): add right-panel text drawing Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(viz): add side-by-side composite assembly Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(viz): add OcrVisualizer class and renderOcrToBlob Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(viz): add subpath entry point and public exports Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * build(viz): add viz subpath entry to Vite build and package.json exports Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore(viz): fix lint and formatting Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(viz): update demo app and docs for viz module - Replace demo's local deterministicColor with viz module import - Add "Download Result" button to demo using OcrVisualizer.toBlob() - Document viz subpath in README.md and README_cn.md - Add viz to Package Layout and API sections Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: improve viz module, core SDK internals, and test coverage - Refine draw-boxes rendering and font loading in viz module - Improve type exports and internal module organization across models, pipelines, resources, runtime, platform, and worker layers - Update test suite for cache, models, pipeline, runtime, worker-backed, and worker-client modules Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: fix documentation accuracy across 6 files and add changeset - Move visualization section before API reference in SDK READMEs (EN/CN) - Add deterministicColor usage description to viz docs - Add src/viz, src/types, src/utils to package layout sections - Fix ESLint rule level: test files use recommendedTypeChecked - Remove non-existent index.umd.js; add viz.mjs/viz.cjs to build outputs - Correct worker WASM inflation size from ~78 MB to ~50 MB - Add changeset for 0.2.0 minor release Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: release @paddleocr/paddleocr-js v0.2.0 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: add paths mapping to tsconfig.eslint.json and demo tsconfig Add @paddleocr/paddleocr-js and @paddleocr/paddleocr-js/viz paths to tsconfig.eslint.json so IDE ESLint can resolve SDK types without depending on workspace symlinks. Also add the viz subpath mapping to apps/demo/tsconfig.json. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: add viz subpath alias to demo Vite dev config Vite resolve.alias needs an explicit entry for the viz subpath — tsconfig paths only affect TypeScript, not Vite's module resolution. The more specific path is listed first to avoid prefix matching. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(demo): replace canvas rendering with viz module side-by-side output Use OcrVisualizer.toBlob() to render detection boxes and recognized text as a composite image displayed via <img>, replacing the manual canvas drawing and removing the Download Result button. Configure PingFang SC font from CDN for proper CJK text rendering in visualizations. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Fix bugs * Remove superpowers docs * Fix bugs * Fix bug * Refactor * Fix bugs * refactor: move cropByPoly from models/det to pipelines/ocr/crop Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: unify DetModel interface to predict(cv, mats, overrides) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: unify RecModel interface to predict(cv, mats, overrides) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: restructure getOcrRuntimeParams return into { det, rec, pipeline } Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: simplify OcrPipelineRunner.predict to pure orchestration Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Refactor * Fix code style * Fix and update * Fix and update * Bump to 0.3.0 * Remove v6 * Bump to v0.3.1 * Fix default paramter * variant -> preset * Add to mkdocs * Update docs and add license headers * Remove unused --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> | 5 months ago |
| upload PaddleOCR code | 6 years ago |
| Add CNAME for custom domain (#16138) | 1 year ago |
| | 1 year ago |
| use setuptools-scm extracts PaddleOCR versions (#13716) * use setuptools-scm extracts PaddleOCR versions * fix bug | 2 years ago |
| docs: organize research papers and unify multilingual citations (#18357) * docs: organize research papers and unify multilingual citations * ci: retry PaddleX installation and stop GPU tests on setup failure Retry PaddleX installation up to three times with 10s and 20s backoff. Stop the container script when environment setup fails so pytest does not run without required dependencies. Preserve the explicit diagnostic for an unrecognized PaddleX requirement. Validation: YAML parsing, bash syntax, git diff --check, and six simulated setup scenarios including retry success, retry exhaustion, early dependency failure, and import failure. * ci: build PaddleX wheel on hosted runner for GPU tests The GPU container repeatedly fails to clone PaddleX from GitHub even after retries. Build the same release-branch source as a wheel on ubuntu-latest, transfer it within the workflow using an artifact, and mount it read-only into the GPU container for installation. Preserve dependency resolution, retries, fail-fast behavior, and the required GPU check. Validation: built paddlex-3.7.2-py3-none-any.whl from release/3.7; checked wheel metadata, YAML and shell syntax, artifact wiring, three preparation scenarios, and five GPU setup scenarios. Full GPU validation runs in CI. | 28 days ago |
| [Feat] Add PP-OCRv6 iOS Demo (#17933) * Update for paddleocr 3.5 * Fix doc * Add doc to nav * Refine docs * Fix PaddleOCR-VL doc * Polish PaddleOCR-VL docs * Polish docs * Add notice * Polish doc * docs: initialize project * Init * feat(02-02): port Clipper polygon offset algorithm to pure Swift - Implement ClipperOffset class with addPath/execute API - Support JT_ROUND + ET_CLOSEDPOLYGON for DB postprocessing - Add static offsetPolygon() convenience for DBPostProcess - Arc tolerance calculation matches pyclipper's Clipper 6.x - Pure Swift, no external dependencies * feat(02-01): add Yams dependency and InferenceConfig YAML parser - Add Yams ~> 5.0 pod to Podfile for inference.yml parsing - Create InferenceConfig.swift with typed parsing of inference.yml - Support TransformOp enum: DetResizeForTest, NormalizeImage, ToCHWImage, RecResizeImg - PostProcessConfig handles both det (DBPostProcess) and rec (CTCLabelDecode) configs - Python-style scale string '1./255.' parsed via string splitting (not eval) - Register InferenceConfig.swift in Xcode project * feat(02-01): implement pure-Swift detection preprocessing operators - Create Preprocessing.swift with DetPreprocessor and PreprocessResult - Port DetResizeForTest: resize longest side to resize_long, ceil to 128 stride - Port NormalizeImage: config-driven scale/mean/std normalization - Port ToCHWImage: HWC-to-CHW layout conversion producing [1,3,H,W] tensor - Image padding for tiny images (h+w < 64) matching Python reference - Pure Swift using CoreGraphics + Accelerate (no OpenCV dependency) - All transform parameters read from InferenceConfig (zero hardcoded values) - Register Preprocessing.swift in Xcode project * feat(02-02): implement DB text detection postprocessing pipeline - Add DBPostProcessor with full pipeline: threshold -> contours -> minAreaRect -> score -> expand -> scale - Implement Suzuki-Abe contour finding with CHAIN_APPROX_SIMPLE compression - Implement rotating calipers minAreaRect + convex hull (Andrew's monotone chain) - Add scanline polygon fill for box_score_fast computation - Integrate ClipperOffset for polygon expansion (unclip) - All parameters configurable via DBPostProcessConfigurable protocol - Pure Swift, no OpenCV dependency * docs(02-02): create SUMMARY.md for ClipperOffset + DBPostProcess plan * feat(02-03): expose runDetection method on ORTSessionManager - Add runDetection(inputData:shape:) for real inference with preprocessed data - Returns output tensors as [String: (data: [Float], shape: [Int])] dictionary - Includes NaN validation on output tensors - All existing methods (loadModels, validateDetModel, validateRecModel) preserved unchanged * feat(02-03): create DetectionEngine orchestrating full detection pipeline - DetectionEngine wires DetPreprocessor -> ORTSessionManager.runDetection -> DBPostProcessor - DetectionResult struct with boxes and per-stage timing metrics (preprocess/inference/postprocess) - All parameters loaded from inference.yml via InferenceConfig.load() - PostProcessConfig conforms to DBPostProcessConfigurable for type-safe init bridging - DetectionEngineError for noOutputTensor and unexpectedOutputShape cases - Registered in Xcode project pbxproj * docs(02-03): complete detection engine integration plan - SUMMARY.md documenting DetectionEngine pipeline integration - STATE.md updated with position, decisions, metrics - REQUIREMENTS.md: POST-01, POST-02 marked complete * docs(phase-02): verification complete — human_needed for runtime numerical exactness * docs(phase-02): complete phase execution * docs(phase-02): evolve PROJECT.md after phase completion * feat(03-01): add runRecognition to ORTSessionManager with shared inference method - Extract private runInference() from runDetection to eliminate code duplication - Add public runRecognition() method that uses recSession for recognition model inference - Both runDetection and runRecognition guard their respective sessions and delegate to runInference - Recognition model supports dynamic-width input tensors [1, 3, 48, W] Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(03-01): create RecPreprocessor implementing OCRResizeNormImg - Implement OCRResizeNormImg algorithm matching PaddleX text_recognition/processors.py - Read imgC/imgH/imgW from inference.yml RecResizeImg.image_shape (config-driven, not hardcoded) - Aspect-ratio-aware resize with ceil() width computation matching Python math.ceil() - Recognition normalization: pixel/127.5 - 1.0 mapping [0,255] to [-1,1] (not ImageNet mean/std) - HWC-to-CHW transpose and right-pad with zeros to target width - Bilinear interpolation via CGContext (pure Swift, no OpenCV) - Register RecPreprocessor.swift in Xcode project (PBXBuildFile, PBXFileReference, PBXGroup, Sources) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(03-01): complete recognition preprocessing & inference plan - Create 03-01-SUMMARY.md documenting plan execution - Update STATE.md: advance to Phase 3 Plan 1 complete, add decisions - Update ROADMAP.md: Phase 3 progress 1/2 - Update REQUIREMENTS.md: mark PREP-04 and PREP-05 as complete Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(03-02): create CTCDecoder implementing CTC label decode with character dictionary - CTCDecoder struct ported from ppocr/postprocess/rec_postprocess.py CTCLabelDecode - Reads character_dict from inference.yml PostProcess config - Prepends blank token at index 0 (CTC convention) - Decoding: argmax + consecutive duplicate removal + blank filtering + char mapping - Confidence: mean probability of selected timesteps - Registered in Xcode project (Engine group) * feat(03-02): create RecognitionEngine orchestrating full recognition pipeline - RecognitionEngine class mirrors DetectionEngine pattern - Composes RecPreprocessor + ORTSessionManager.runRecognition + CTCDecoder - Returns RecognitionEngineResult with text, confidence, and per-stage timing - Config-driven: reads inference.yml for preprocessing dims and character dictionary - Registered in Xcode project (Engine group) * docs(03-02): complete CTC decoding and recognition engine integration plan - 03-02-SUMMARY.md with frontmatter, accomplishments, and self-check - STATE.md updated with position, decisions, metrics - ROADMAP.md Phase 3 marked 2/2 complete - REQUIREMENTS.md POST-03, POST-04 marked complete * docs(03): create gap closure plan for CTCDecoder missing space character Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(03-03): append ASCII space to CTCDecoder dictionary for 18,385-element parity - Add chars.append(" ") after dict chars to match PaddleX use_space_char=True default - Update doc comments to document full 18,385-element character list layout - Fixes model output class index 18384 being silently dropped during decode * docs(03-03): complete CTC decoder space character fix plan - Created 03-03-SUMMARY.md with execution results - Updated STATE.md with plan completion and metrics - Updated ROADMAP.md with plan 03-03 completion status * merge: integrate phase 03-03 gap closure from worktree * docs(phase-03): complete phase execution — 7/7 must-haves verified Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(phase-03): evolve PROJECT.md after phase completion Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(04): create phase plan for Pipeline Orchestration & Validation 3 plans in 2 waves: - Plan 01 (Wave 1): BoxSorter + PerspectiveCrop algorithms - Plan 02 (Wave 1): Python validation scripts (generate_reference.py + validate.py) - Plan 03 (Wave 2): OCREngine orchestrator + ValidationExport JSON serializer Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(04-02): add PaddleX reference output generator for iOS validation - generate_reference.py runs PaddleOCR on test images, exports per-image JSON with polygon coordinates, text, and confidence scores - Creates test_images/ directory with .gitkeep for developer-provided images - .gitignore excludes generated reference/ directory from version control - Supports PP-OCRv5 mobile det/rec models with all optional processors disabled * feat(04-01): implement BoxSorter reading-order sort - Port PaddleX SortQuadBoxes algorithm to Swift - Two-phase sort: initial y/x sort + backward insertion for same-line reorder - yThreshold=10 matching PaddleX hardcoded value - Consumes DetectionBox type from DBPostProcess.swift * feat(04-02): add iOS vs reference validation script and README - validate.py compares iOS JSON output against PaddleX reference JSON with exact polygon/text match and 1e-4 confidence tolerance - Prints per-image PASS/FAIL and overall summary with box match counts - Exit codes: 0=pass, 1=fail, 2=missing files (CI-friendly) - README.md documents complete validation workflow (generate -> export -> validate) * feat(04-01): implement PerspectiveCrop with DLT warp and tall-narrow rotation - Port PaddleX get_rotate_crop_image algorithm to pure Swift - DLT perspective matrix solve via 8x8 Gaussian elimination - Backward-mapping bilinear warp with BORDER_REPLICATE clamping - 90-degree CCW rotation when height/width >= 1.5 - Float64 precision for matrix computation, Float for pixel sampling - CoreGraphics-only: no OpenCV dependency * docs(04-02): complete validation scripts plan - SUMMARY.md documenting plan execution (2 tasks, 5 files, 4min) - STATE.md updated with position, decisions, metrics - ROADMAP.md updated with Phase 04 progress (1/3 plans) - REQUIREMENTS.md marks VALID-01, VALID-02, PIPE-05 complete * docs(04-01): complete pipeline bridge algorithms plan - SUMMARY.md with BoxSorter and PerspectiveCrop execution results - STATE.md updated with Phase 04 position and decisions - ROADMAP.md updated with plan progress (1/3) - REQUIREMENTS.md marked PIPE-02, PIPE-03 complete * feat(04-03): add OCREngine pipeline orchestrator with per-stage timing - Composes DetectionEngine, BoxSorter, PerspectiveCrop, RecognitionEngine - Async run() method: detect -> sort -> crop -> recognize flow - OCRResult and OCRPipelineResult types with per-stage timing breakdown - Zero hardcoded params; all config-driven via inference.yml * feat(04-03): add ValidationExport JSON serializer for pipeline output - Serializes OCRPipelineResult to JSON matching Python validation schema - Schema: {image, box_count, boxes: [{polygon, text, confidence}]} - writeJSON writes to Documents/validation_output/ for device extraction - Sorted keys for deterministic output diffs * docs(04-03): complete pipeline orchestration plan - OCREngine + ValidationExport implemented and committed - STATE.md, ROADMAP.md, REQUIREMENTS.md updated - PIPE-01, PIPE-04, CONF-02, CONF-03, CONF-04, CONF-05 marked complete * docs(phase-04): complete phase execution — 10/10 must-haves verified * docs(phase-04): evolve PROJECT.md after phase completion * docs(05-user-interface): create phase plan Two plans for Phase 5 UI: Plan 01 (wave 1) establishes OCRViewModel state machine, PhotosPicker integration, sample images, and ContentView coordinator. Plan 02 (wave 2) adds ResultImageView with Canvas polygon overlay, TimingView, ResultsListView with clipboard copy, ErrorView, and a human verification checkpoint. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(05-01): create OCRViewModel with full lifecycle state machine - Add AppState enum with 5 states: loadingModels, ready, processing, results, error - Add AppError enum with modelLoadFailed, inferenceFailed, imageLoadFailed cases - Add OCRViewModel @MainActor class managing full app lifecycle via single @Published state - Implement loadModels, processImage, selectSampleImage, copyResultsToClipboard, retry, reset - Add normalizeOrientation helper for EXIF rotation flattening - Fix missing pbxproj entries for OCREngine, BoxSorter, PerspectiveCrop, ValidationExport (Rule 3) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(05-01): create ImagePickerSection and bundle sample images - Add ImagePickerSection.swift with PhotosPicker + sample thumbnail row - Bundle 3 sample images: English (book.jpg), Chinese (PP-OCRv3-pic001), multiline (table.jpg) - Add SampleImages as folder reference in Xcode project Resources build phase - Add Views group and Resources group to Xcode project structure Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(05-01): rewrite ContentView as state coordinator, retire AppViewModel - Rewrite ContentView to use OCRViewModel with state-driven rendering - Add NavigationStack with inline title "PaddleOCR Demo" - Implement 5 state views: loadingModels, ready, processing, results, error - Wire PhotosPicker via onChange binding with Data loadTransferable - Integrate ImagePickerSection in ready, results, and non-model-error states - Show processing overlay spinner on selected image - Add placeholder results view with text list and timing (Plan 02 replaces) - Error view with context-specific heading and Retry button - Replace AppViewModel.swift contents with empty stub comment Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(05-01): complete view model + image selection plan - Create 05-01-SUMMARY.md with execution results and self-check - Update STATE.md: Phase 5 Plan 1 complete, add decisions - Update ROADMAP.md: Phase 5 progress (1/2 plans) - Mark requirements UI-01, UI-02, UI-07, UI-08 as complete Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * merge: resolve STATE.md conflict after 05-01 execution * feat(05-02): add ResultImageView with Canvas polygon overlay and TimingView Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(05-02): add ResultsListView, ErrorView, and wire all views into ContentView Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update docs * update * update * Fix and update * update speed data * Optimize UI * add warning * update warning * update warning * update warning * update warning * update * update * Remove cached inference.yml files * Fix bugs * Update API docs * Update API docs * Fix * Update * Update git ignore * Update docs * Refactor and align with Python * Fix config settting * Optimize code * Allow engine selection * Restructure folders * Support batch inference * update pp_structure_v3 case * update * Init validation toolkit * Hack paddleocr * Allow specifying URLs for pdx and ppocr version * docs: release-review fixes for 3.5 docs Addresses issues surfaced during release-time review of #17820, covering broken rendering, broken cross-language and anchor links, expression and consistency nits, and the strict-mode docs-anchor CI. Rendering fixes: - Restore truncated/duplicated parameter-table rows in OCR.en.md, PP-DocTranslation.en.md, PP-StructureV3.en.md, and doc_understanding.en.md - Fix mis-indented kwarg in the PP-DocTranslation.en.md transformers example (would SyntaxError on copy-paste) - Fix 4-backtick closing fence and over-wide rowspan in chart_parsing.{en,zh}.md - Fill in empty enable_hpi default (None) in PaddleOCR-VL.en.md Link fixes: - Point module_usage .en.md files at ../inference_engine.en.md instead of the Chinese ../inference_engine.md (11 files) - Replace Chinese anchor #五推理引擎 with #5-inference-engine in eight module_usage .en.md files, and normalize the corresponding heading from "## V. Inference Engine" to "## 5. Inference Engine" in textline_orientation_classification.en.md - Correct mislabeled PaddleX weight-conversion link text in text_detection.en.md and table_structure_recognition.en.md - Align broken cross-file link in inference_engine.md with the actual slug (#3-paddlex) so it stops conflicting with high_performance_inference.md and serving.md Chinese anchor resolution (CI fix): - Attach explicit {#anchor} (attr_list) attributes to the zh headings for "推理引擎", "权重转换", and "流程导览" so the existing in-page Chinese anchors resolve under the default mkdocs slugify. Build now clean under mkdocs-ci.yml strict mode. Expression and consistency: - Drop duplicated "and vLLM" phrase in NVIDIA Blackwell WARNING - Restore Chinese key "驾驶室准乘人数" in PP-ChatOCRv4.en.md transformers example (rest of the doc keeps it) - Normalize "Paddle framework" to "PaddlePaddle framework" and align link text with target file title across affected docs - Fix plural/singular mismatch ("examples"/"them" -> "example"/"it") in module_usage .en.md quick-start intros that show one command - Add missing comma after hardware names in five hardware EN tutorials - Add spacing in "PaddleX 产线 Python 脚本使用说明" link text in inference_engine.md - Use uppercase CPU/GPU in paddlepaddle_installation.md comments Navigation: - Add missing English nav_translations entries so the English sidebar no longer shows raw Chinese labels: PP-DocTranslation产线 -> PP-DocTranslation Pipeline 推理引擎与配置说明 -> Inference Engine and Configuration Signed-off-by: Bvicii <yizhanhuang2002@gmail.com> * docs: clarify that engine=None preserves legacy PaddleOCR behavior Addresses PR #17820 review feedback: the engine-parameter row lists paddle, paddle_static, paddle_dynamic, and transformers as supported values but doesn't mention that None is also valid (and is the default). Add a short user-facing clarification to every engine row's Description so readers who see default=None understand what that means: - EN: "If left as None (the default), PaddleOCR preserves the behavior of earlier versions, which in most configurations is equivalent to paddle." - ZH: "保持为默认值 None 时,PaddleOCR 保留旧版本的行为,在大多数配置下 等价于 paddle。" 48 files, 66 engine rows updated (33 EN + 33 ZH). No changes to engine_config rows, which use a different description. Signed-off-by: Bvicii <yizhanhuang2002@gmail.com> * Remove planning files * Fix code style * Optimize docs * Update docs * docs: align CUDA 12.6 Docker driver version with pip section Per review feedback from changdazhou on PR #17820 (L26), update the CUDA 12.6 Docker GPU line to require driver >= 550.54.14, matching the pip section already at L61 (both ZH and EN). Signed-off-by: Bvicii <yizhanhuang2002@gmail.com> * docs: include None in engine supported-values list Per follow-up review on PR #17820: from a completeness standpoint, None belongs in the "Supports ..." enumeration rather than only in the trailing clarification sentence. Move None into the list as the default value and tighten the follow-on sentence accordingly. - EN: "Supports None (the default), paddle, paddle_static, paddle_dynamic, and transformers. When left as None, PaddleOCR preserves the behavior of earlier versions..." - ZH: "支持 None(默认值)、paddle、paddle_static、paddle_dynamic、 transformers。保持为默认值 None 时..." Applied to all three supported-value variants across the module_usage and pipeline_usage pages — same 48 files / 66 rows as the previous clarification commit. Signed-off-by: Bvicii <yizhanhuang2002@gmail.com> * Fix benchmark * Add icon and fix validation * ci,docs: align PaddleX install branch and document py3.8 extras boundary (#17954) (#17961) * ci,docs: align PaddleX install branch and document py3.8 extras boundary - CI: derive the PaddleX install branch from the paddlex constraint in pyproject.toml (release/X.Y) so PR/GPU tests stay in sync as the paddleocr series advances; apply to both tests.yml and test_gpu.yml - CI: install only paddleocr[doc2md] on py3.8 since several paddlex transitive deps require py3.9+; add a py38_incompatible pytest marker and gate affected tests behind it - CI: pin paddlepaddle==3.0.0 on py3.8 / 3.1.0 on py3.9+ (match GPU CI) - CI: standardize workflow filenames (.yaml -> .yml, dashes -> underscores) - deps: pin lmdb<1.5 on py3.8 (newer lmdb wheels reference Py_SET_REFCNT, a py3.9 stdlib C API) - docs: note Python 3.8+ for base paddleocr/doc2md; py3.9+ for doc-parser/ie/trans/all extras (safetensors>=0.7 dropped py3.8) - docs: update PaddleOCR-VL manual-install Python range to 3.9-3.13 across all hardware variants (VL pipelines use doc-parser) - tests: tag tests that require py3.9+ extras/deps with py38_incompatible * ci: mark /workspace as git safe.directory in GPU runner setuptools_scm runs git to derive the package version during pip install -e .; inside the GPU CI container /workspace is owned by the host user, which trips git's dubious-ownership check and aborts the paddleocr install. --------- (cherry picked from commit 09e8700fe69d0fa8c9d6c70b6cf3e978c283bbeb) Signed-off-by: Bvicii <yizhanhuang2002@gmail.com> * Add quantization * docs(ios_demo): add build_onnx_calib_npy.py and README for static calib .npy Made-with: Cursor * Enhance quantization and support ort format * Fix skills * Fix installation docs * Enhance benchmark * Use release config * By default use CPU * Support setting session options * Enhance UI * Update benchmark docs * Fix wrong updates * reset skill updates * Update .gitignore * Add chinese docs * Support PP-OCRv5_mobile * Remove on-device deployment * Fix anchor: --------- Signed-off-by: Bvicii <yizhanhuang2002@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: zhangyue66 <zhangyue66@baidu.com> Co-authored-by: Bvicii <yizhanhuang2002@gmail.com> Co-authored-by: Bvicii <98971614+scyyh11@users.noreply.github.com> | 4 months ago |
| [Feat] Add PP-OCRv6 iOS Demo (#17933) * Update for paddleocr 3.5 * Fix doc * Add doc to nav * Refine docs * Fix PaddleOCR-VL doc * Polish PaddleOCR-VL docs * Polish docs * Add notice * Polish doc * docs: initialize project * Init * feat(02-02): port Clipper polygon offset algorithm to pure Swift - Implement ClipperOffset class with addPath/execute API - Support JT_ROUND + ET_CLOSEDPOLYGON for DB postprocessing - Add static offsetPolygon() convenience for DBPostProcess - Arc tolerance calculation matches pyclipper's Clipper 6.x - Pure Swift, no external dependencies * feat(02-01): add Yams dependency and InferenceConfig YAML parser - Add Yams ~> 5.0 pod to Podfile for inference.yml parsing - Create InferenceConfig.swift with typed parsing of inference.yml - Support TransformOp enum: DetResizeForTest, NormalizeImage, ToCHWImage, RecResizeImg - PostProcessConfig handles both det (DBPostProcess) and rec (CTCLabelDecode) configs - Python-style scale string '1./255.' parsed via string splitting (not eval) - Register InferenceConfig.swift in Xcode project * feat(02-01): implement pure-Swift detection preprocessing operators - Create Preprocessing.swift with DetPreprocessor and PreprocessResult - Port DetResizeForTest: resize longest side to resize_long, ceil to 128 stride - Port NormalizeImage: config-driven scale/mean/std normalization - Port ToCHWImage: HWC-to-CHW layout conversion producing [1,3,H,W] tensor - Image padding for tiny images (h+w < 64) matching Python reference - Pure Swift using CoreGraphics + Accelerate (no OpenCV dependency) - All transform parameters read from InferenceConfig (zero hardcoded values) - Register Preprocessing.swift in Xcode project * feat(02-02): implement DB text detection postprocessing pipeline - Add DBPostProcessor with full pipeline: threshold -> contours -> minAreaRect -> score -> expand -> scale - Implement Suzuki-Abe contour finding with CHAIN_APPROX_SIMPLE compression - Implement rotating calipers minAreaRect + convex hull (Andrew's monotone chain) - Add scanline polygon fill for box_score_fast computation - Integrate ClipperOffset for polygon expansion (unclip) - All parameters configurable via DBPostProcessConfigurable protocol - Pure Swift, no OpenCV dependency * docs(02-02): create SUMMARY.md for ClipperOffset + DBPostProcess plan * feat(02-03): expose runDetection method on ORTSessionManager - Add runDetection(inputData:shape:) for real inference with preprocessed data - Returns output tensors as [String: (data: [Float], shape: [Int])] dictionary - Includes NaN validation on output tensors - All existing methods (loadModels, validateDetModel, validateRecModel) preserved unchanged * feat(02-03): create DetectionEngine orchestrating full detection pipeline - DetectionEngine wires DetPreprocessor -> ORTSessionManager.runDetection -> DBPostProcessor - DetectionResult struct with boxes and per-stage timing metrics (preprocess/inference/postprocess) - All parameters loaded from inference.yml via InferenceConfig.load() - PostProcessConfig conforms to DBPostProcessConfigurable for type-safe init bridging - DetectionEngineError for noOutputTensor and unexpectedOutputShape cases - Registered in Xcode project pbxproj * docs(02-03): complete detection engine integration plan - SUMMARY.md documenting DetectionEngine pipeline integration - STATE.md updated with position, decisions, metrics - REQUIREMENTS.md: POST-01, POST-02 marked complete * docs(phase-02): verification complete — human_needed for runtime numerical exactness * docs(phase-02): complete phase execution * docs(phase-02): evolve PROJECT.md after phase completion * feat(03-01): add runRecognition to ORTSessionManager with shared inference method - Extract private runInference() from runDetection to eliminate code duplication - Add public runRecognition() method that uses recSession for recognition model inference - Both runDetection and runRecognition guard their respective sessions and delegate to runInference - Recognition model supports dynamic-width input tensors [1, 3, 48, W] Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(03-01): create RecPreprocessor implementing OCRResizeNormImg - Implement OCRResizeNormImg algorithm matching PaddleX text_recognition/processors.py - Read imgC/imgH/imgW from inference.yml RecResizeImg.image_shape (config-driven, not hardcoded) - Aspect-ratio-aware resize with ceil() width computation matching Python math.ceil() - Recognition normalization: pixel/127.5 - 1.0 mapping [0,255] to [-1,1] (not ImageNet mean/std) - HWC-to-CHW transpose and right-pad with zeros to target width - Bilinear interpolation via CGContext (pure Swift, no OpenCV) - Register RecPreprocessor.swift in Xcode project (PBXBuildFile, PBXFileReference, PBXGroup, Sources) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(03-01): complete recognition preprocessing & inference plan - Create 03-01-SUMMARY.md documenting plan execution - Update STATE.md: advance to Phase 3 Plan 1 complete, add decisions - Update ROADMAP.md: Phase 3 progress 1/2 - Update REQUIREMENTS.md: mark PREP-04 and PREP-05 as complete Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(03-02): create CTCDecoder implementing CTC label decode with character dictionary - CTCDecoder struct ported from ppocr/postprocess/rec_postprocess.py CTCLabelDecode - Reads character_dict from inference.yml PostProcess config - Prepends blank token at index 0 (CTC convention) - Decoding: argmax + consecutive duplicate removal + blank filtering + char mapping - Confidence: mean probability of selected timesteps - Registered in Xcode project (Engine group) * feat(03-02): create RecognitionEngine orchestrating full recognition pipeline - RecognitionEngine class mirrors DetectionEngine pattern - Composes RecPreprocessor + ORTSessionManager.runRecognition + CTCDecoder - Returns RecognitionEngineResult with text, confidence, and per-stage timing - Config-driven: reads inference.yml for preprocessing dims and character dictionary - Registered in Xcode project (Engine group) * docs(03-02): complete CTC decoding and recognition engine integration plan - 03-02-SUMMARY.md with frontmatter, accomplishments, and self-check - STATE.md updated with position, decisions, metrics - ROADMAP.md Phase 3 marked 2/2 complete - REQUIREMENTS.md POST-03, POST-04 marked complete * docs(03): create gap closure plan for CTCDecoder missing space character Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(03-03): append ASCII space to CTCDecoder dictionary for 18,385-element parity - Add chars.append(" ") after dict chars to match PaddleX use_space_char=True default - Update doc comments to document full 18,385-element character list layout - Fixes model output class index 18384 being silently dropped during decode * docs(03-03): complete CTC decoder space character fix plan - Created 03-03-SUMMARY.md with execution results - Updated STATE.md with plan completion and metrics - Updated ROADMAP.md with plan 03-03 completion status * merge: integrate phase 03-03 gap closure from worktree * docs(phase-03): complete phase execution — 7/7 must-haves verified Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(phase-03): evolve PROJECT.md after phase completion Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(04): create phase plan for Pipeline Orchestration & Validation 3 plans in 2 waves: - Plan 01 (Wave 1): BoxSorter + PerspectiveCrop algorithms - Plan 02 (Wave 1): Python validation scripts (generate_reference.py + validate.py) - Plan 03 (Wave 2): OCREngine orchestrator + ValidationExport JSON serializer Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(04-02): add PaddleX reference output generator for iOS validation - generate_reference.py runs PaddleOCR on test images, exports per-image JSON with polygon coordinates, text, and confidence scores - Creates test_images/ directory with .gitkeep for developer-provided images - .gitignore excludes generated reference/ directory from version control - Supports PP-OCRv5 mobile det/rec models with all optional processors disabled * feat(04-01): implement BoxSorter reading-order sort - Port PaddleX SortQuadBoxes algorithm to Swift - Two-phase sort: initial y/x sort + backward insertion for same-line reorder - yThreshold=10 matching PaddleX hardcoded value - Consumes DetectionBox type from DBPostProcess.swift * feat(04-02): add iOS vs reference validation script and README - validate.py compares iOS JSON output against PaddleX reference JSON with exact polygon/text match and 1e-4 confidence tolerance - Prints per-image PASS/FAIL and overall summary with box match counts - Exit codes: 0=pass, 1=fail, 2=missing files (CI-friendly) - README.md documents complete validation workflow (generate -> export -> validate) * feat(04-01): implement PerspectiveCrop with DLT warp and tall-narrow rotation - Port PaddleX get_rotate_crop_image algorithm to pure Swift - DLT perspective matrix solve via 8x8 Gaussian elimination - Backward-mapping bilinear warp with BORDER_REPLICATE clamping - 90-degree CCW rotation when height/width >= 1.5 - Float64 precision for matrix computation, Float for pixel sampling - CoreGraphics-only: no OpenCV dependency * docs(04-02): complete validation scripts plan - SUMMARY.md documenting plan execution (2 tasks, 5 files, 4min) - STATE.md updated with position, decisions, metrics - ROADMAP.md updated with Phase 04 progress (1/3 plans) - REQUIREMENTS.md marks VALID-01, VALID-02, PIPE-05 complete * docs(04-01): complete pipeline bridge algorithms plan - SUMMARY.md with BoxSorter and PerspectiveCrop execution results - STATE.md updated with Phase 04 position and decisions - ROADMAP.md updated with plan progress (1/3) - REQUIREMENTS.md marked PIPE-02, PIPE-03 complete * feat(04-03): add OCREngine pipeline orchestrator with per-stage timing - Composes DetectionEngine, BoxSorter, PerspectiveCrop, RecognitionEngine - Async run() method: detect -> sort -> crop -> recognize flow - OCRResult and OCRPipelineResult types with per-stage timing breakdown - Zero hardcoded params; all config-driven via inference.yml * feat(04-03): add ValidationExport JSON serializer for pipeline output - Serializes OCRPipelineResult to JSON matching Python validation schema - Schema: {image, box_count, boxes: [{polygon, text, confidence}]} - writeJSON writes to Documents/validation_output/ for device extraction - Sorted keys for deterministic output diffs * docs(04-03): complete pipeline orchestration plan - OCREngine + ValidationExport implemented and committed - STATE.md, ROADMAP.md, REQUIREMENTS.md updated - PIPE-01, PIPE-04, CONF-02, CONF-03, CONF-04, CONF-05 marked complete * docs(phase-04): complete phase execution — 10/10 must-haves verified * docs(phase-04): evolve PROJECT.md after phase completion * docs(05-user-interface): create phase plan Two plans for Phase 5 UI: Plan 01 (wave 1) establishes OCRViewModel state machine, PhotosPicker integration, sample images, and ContentView coordinator. Plan 02 (wave 2) adds ResultImageView with Canvas polygon overlay, TimingView, ResultsListView with clipboard copy, ErrorView, and a human verification checkpoint. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(05-01): create OCRViewModel with full lifecycle state machine - Add AppState enum with 5 states: loadingModels, ready, processing, results, error - Add AppError enum with modelLoadFailed, inferenceFailed, imageLoadFailed cases - Add OCRViewModel @MainActor class managing full app lifecycle via single @Published state - Implement loadModels, processImage, selectSampleImage, copyResultsToClipboard, retry, reset - Add normalizeOrientation helper for EXIF rotation flattening - Fix missing pbxproj entries for OCREngine, BoxSorter, PerspectiveCrop, ValidationExport (Rule 3) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(05-01): create ImagePickerSection and bundle sample images - Add ImagePickerSection.swift with PhotosPicker + sample thumbnail row - Bundle 3 sample images: English (book.jpg), Chinese (PP-OCRv3-pic001), multiline (table.jpg) - Add SampleImages as folder reference in Xcode project Resources build phase - Add Views group and Resources group to Xcode project structure Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(05-01): rewrite ContentView as state coordinator, retire AppViewModel - Rewrite ContentView to use OCRViewModel with state-driven rendering - Add NavigationStack with inline title "PaddleOCR Demo" - Implement 5 state views: loadingModels, ready, processing, results, error - Wire PhotosPicker via onChange binding with Data loadTransferable - Integrate ImagePickerSection in ready, results, and non-model-error states - Show processing overlay spinner on selected image - Add placeholder results view with text list and timing (Plan 02 replaces) - Error view with context-specific heading and Retry button - Replace AppViewModel.swift contents with empty stub comment Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(05-01): complete view model + image selection plan - Create 05-01-SUMMARY.md with execution results and self-check - Update STATE.md: Phase 5 Plan 1 complete, add decisions - Update ROADMAP.md: Phase 5 progress (1/2 plans) - Mark requirements UI-01, UI-02, UI-07, UI-08 as complete Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * merge: resolve STATE.md conflict after 05-01 execution * feat(05-02): add ResultImageView with Canvas polygon overlay and TimingView Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(05-02): add ResultsListView, ErrorView, and wire all views into ContentView Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update docs * update * update * Fix and update * update speed data * Optimize UI * add warning * update warning * update warning * update warning * update warning * update * update * Remove cached inference.yml files * Fix bugs * Update API docs * Update API docs * Fix * Update * Update git ignore * Update docs * Refactor and align with Python * Fix config settting * Optimize code * Allow engine selection * Restructure folders * Support batch inference * update pp_structure_v3 case * update * Init validation toolkit * Hack paddleocr * Allow specifying URLs for pdx and ppocr version * docs: release-review fixes for 3.5 docs Addresses issues surfaced during release-time review of #17820, covering broken rendering, broken cross-language and anchor links, expression and consistency nits, and the strict-mode docs-anchor CI. Rendering fixes: - Restore truncated/duplicated parameter-table rows in OCR.en.md, PP-DocTranslation.en.md, PP-StructureV3.en.md, and doc_understanding.en.md - Fix mis-indented kwarg in the PP-DocTranslation.en.md transformers example (would SyntaxError on copy-paste) - Fix 4-backtick closing fence and over-wide rowspan in chart_parsing.{en,zh}.md - Fill in empty enable_hpi default (None) in PaddleOCR-VL.en.md Link fixes: - Point module_usage .en.md files at ../inference_engine.en.md instead of the Chinese ../inference_engine.md (11 files) - Replace Chinese anchor #五推理引擎 with #5-inference-engine in eight module_usage .en.md files, and normalize the corresponding heading from "## V. Inference Engine" to "## 5. Inference Engine" in textline_orientation_classification.en.md - Correct mislabeled PaddleX weight-conversion link text in text_detection.en.md and table_structure_recognition.en.md - Align broken cross-file link in inference_engine.md with the actual slug (#3-paddlex) so it stops conflicting with high_performance_inference.md and serving.md Chinese anchor resolution (CI fix): - Attach explicit {#anchor} (attr_list) attributes to the zh headings for "推理引擎", "权重转换", and "流程导览" so the existing in-page Chinese anchors resolve under the default mkdocs slugify. Build now clean under mkdocs-ci.yml strict mode. Expression and consistency: - Drop duplicated "and vLLM" phrase in NVIDIA Blackwell WARNING - Restore Chinese key "驾驶室准乘人数" in PP-ChatOCRv4.en.md transformers example (rest of the doc keeps it) - Normalize "Paddle framework" to "PaddlePaddle framework" and align link text with target file title across affected docs - Fix plural/singular mismatch ("examples"/"them" -> "example"/"it") in module_usage .en.md quick-start intros that show one command - Add missing comma after hardware names in five hardware EN tutorials - Add spacing in "PaddleX 产线 Python 脚本使用说明" link text in inference_engine.md - Use uppercase CPU/GPU in paddlepaddle_installation.md comments Navigation: - Add missing English nav_translations entries so the English sidebar no longer shows raw Chinese labels: PP-DocTranslation产线 -> PP-DocTranslation Pipeline 推理引擎与配置说明 -> Inference Engine and Configuration Signed-off-by: Bvicii <yizhanhuang2002@gmail.com> * docs: clarify that engine=None preserves legacy PaddleOCR behavior Addresses PR #17820 review feedback: the engine-parameter row lists paddle, paddle_static, paddle_dynamic, and transformers as supported values but doesn't mention that None is also valid (and is the default). Add a short user-facing clarification to every engine row's Description so readers who see default=None understand what that means: - EN: "If left as None (the default), PaddleOCR preserves the behavior of earlier versions, which in most configurations is equivalent to paddle." - ZH: "保持为默认值 None 时,PaddleOCR 保留旧版本的行为,在大多数配置下 等价于 paddle。" 48 files, 66 engine rows updated (33 EN + 33 ZH). No changes to engine_config rows, which use a different description. Signed-off-by: Bvicii <yizhanhuang2002@gmail.com> * Remove planning files * Fix code style * Optimize docs * Update docs * docs: align CUDA 12.6 Docker driver version with pip section Per review feedback from changdazhou on PR #17820 (L26), update the CUDA 12.6 Docker GPU line to require driver >= 550.54.14, matching the pip section already at L61 (both ZH and EN). Signed-off-by: Bvicii <yizhanhuang2002@gmail.com> * docs: include None in engine supported-values list Per follow-up review on PR #17820: from a completeness standpoint, None belongs in the "Supports ..." enumeration rather than only in the trailing clarification sentence. Move None into the list as the default value and tighten the follow-on sentence accordingly. - EN: "Supports None (the default), paddle, paddle_static, paddle_dynamic, and transformers. When left as None, PaddleOCR preserves the behavior of earlier versions..." - ZH: "支持 None(默认值)、paddle、paddle_static、paddle_dynamic、 transformers。保持为默认值 None 时..." Applied to all three supported-value variants across the module_usage and pipeline_usage pages — same 48 files / 66 rows as the previous clarification commit. Signed-off-by: Bvicii <yizhanhuang2002@gmail.com> * Fix benchmark * Add icon and fix validation * ci,docs: align PaddleX install branch and document py3.8 extras boundary (#17954) (#17961) * ci,docs: align PaddleX install branch and document py3.8 extras boundary - CI: derive the PaddleX install branch from the paddlex constraint in pyproject.toml (release/X.Y) so PR/GPU tests stay in sync as the paddleocr series advances; apply to both tests.yml and test_gpu.yml - CI: install only paddleocr[doc2md] on py3.8 since several paddlex transitive deps require py3.9+; add a py38_incompatible pytest marker and gate affected tests behind it - CI: pin paddlepaddle==3.0.0 on py3.8 / 3.1.0 on py3.9+ (match GPU CI) - CI: standardize workflow filenames (.yaml -> .yml, dashes -> underscores) - deps: pin lmdb<1.5 on py3.8 (newer lmdb wheels reference Py_SET_REFCNT, a py3.9 stdlib C API) - docs: note Python 3.8+ for base paddleocr/doc2md; py3.9+ for doc-parser/ie/trans/all extras (safetensors>=0.7 dropped py3.8) - docs: update PaddleOCR-VL manual-install Python range to 3.9-3.13 across all hardware variants (VL pipelines use doc-parser) - tests: tag tests that require py3.9+ extras/deps with py38_incompatible * ci: mark /workspace as git safe.directory in GPU runner setuptools_scm runs git to derive the package version during pip install -e .; inside the GPU CI container /workspace is owned by the host user, which trips git's dubious-ownership check and aborts the paddleocr install. --------- (cherry picked from commit 09e8700fe69d0fa8c9d6c70b6cf3e978c283bbeb) Signed-off-by: Bvicii <yizhanhuang2002@gmail.com> * Add quantization * docs(ios_demo): add build_onnx_calib_npy.py and README for static calib .npy Made-with: Cursor * Enhance quantization and support ort format * Fix skills * Fix installation docs * Enhance benchmark * Use release config * By default use CPU * Support setting session options * Enhance UI * Update benchmark docs * Fix wrong updates * reset skill updates * Update .gitignore * Add chinese docs * Support PP-OCRv5_mobile * Remove on-device deployment * Fix anchor: --------- Signed-off-by: Bvicii <yizhanhuang2002@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: zhangyue66 <zhangyue66@baidu.com> Co-authored-by: Bvicii <yizhanhuang2002@gmail.com> Co-authored-by: Bvicii <98971614+scyyh11@users.noreply.github.com> | 4 months ago |
| refactor(skills): simplify skills to use PaddleOCR CLI directly (#18090) * refactor(skills): simplify skills to use PaddleOCR CLI directly Simplify PaddleOCR Skills by removing custom scripts and using the official paddleocr api CLI directly. This reduces maintenance burden and aligns with the 3.6.0 release which includes async API support. **Changes:** - Remove scripts/ and references/ directories from both skills - Rewrite SKILL.md files to document CLI usage - Update environment variables from PADDLEOCR_OCR_API_URL / PADDLEOCR_DOC_PARSING_API_URL to PADDLEOCR_BASE_URL (optional) - Update skills.md and skills.en.md documentation **Environment Variables:** - Required: PADDLEOCR_ACCESS_TOKEN - Optional: PADDLEOCR_BASE_URL (defaults to official service) **Installation:** Users now install PaddleOCR 3.6.0+ and use the CLI directly: pip install "paddleocr>=3.6.0" paddleocr api --model_type ocr --file_url "..." * fix: add missing newline at end of SKILL.md * Fix and polish --------- Co-authored-by: Bobholamovic <bob1998425@hotmail.com> | 4 months ago |
| adding frigate to awesome_projects.md (#16659) Frigate is a real-time NVR system that uses PaddleOCR for License Plate Recognition (LPR). Co-authored-by: AmirHossein_Omidi <151873319+AmirHoseinOmidi@users.noreply.github.com> | 11 months ago |
| Add CI check for broken anchor links in documentation (#17757) Prevent regressions of broken anchor links by running mkdocs build --strict with anchor-only validation in CI. - Create mkdocs-ci.yml that inherits from mkdocs.yml with strict mode and anchors: warn (other link types demoted to info) - Add GitHub Actions workflow triggered on PRs touching docs - Add enabled: !ENV [ENABLE_GIT_PLUGINS, true] to git-committers and git-revision-date-localized plugins so CI can skip them - Add English translation of community_contribution.md with correct anchor links to code_and_doc.en.md | 7 months ago |
| docs: organize research papers and unify multilingual citations (#18357) * docs: organize research papers and unify multilingual citations * ci: retry PaddleX installation and stop GPU tests on setup failure Retry PaddleX installation up to three times with 10s and 20s backoff. Stop the container script when environment setup fails so pytest does not run without required dependencies. Preserve the explicit diagnostic for an unrecognized PaddleX requirement. Validation: YAML parsing, bash syntax, git diff --check, and six simulated setup scenarios including retry success, retry exhaustion, early dependency failure, and import failure. * ci: build PaddleX wheel on hosted runner for GPU tests The GPU container repeatedly fails to clone PaddleX from GitHub even after retries. Build the same release-branch source as a wheel on ubuntu-latest, transfer it within the workflow using an artifact, and mount it read-only into the GPU container for installation. Preserve dependency resolution, retries, fail-fast behavior, and the required GPU check. Validation: built paddlex-3.7.2-py3-none-any.whl from release/3.7; checked wheel metadata, YAML and shell syntax, artifact wiring, three preparation scenarios, and five GPU setup scenarios. Full GPU validation runs in CI. | 28 days ago |
| [Feat] Support PP-OCRv6 (#18104) * Fix bugs * Fix for python3.8 * Fix mcp server * Optimize * Fix bugs * Refactor * Fix MCP * Bump MCP to 0.8.1 * Fix bugs * Bump version to 0.8.2 * Fix bugs and update docs * Update docs and fix bugs * Fix bugs * update pp-ocrv6 * update pp-ocrv6 # Conflicts: # docs/version3.x/module_usage/text_detection.md # docs/version3.x/module_usage/text_recognition.md # docs/version3.x/pipeline_usage/OCR.md # paddleocr/_api_client/models.py # paddleocr/_pipelines/ocr.py * Bump paddleocr version * update PP-OCRv6 docs: add model metrics, fix sizes, update language count to 50 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update PP-OCRv6: add model metrics/sizes to docs, support az/ku languages - Add PP-OCRv6 model precision, sizes, descriptions to doc tables - Add OCR pipeline introduction for PP-OCRv6 - Remove az/ku from unsupported latin langs (dict covers them) - Update language count: 48->50 (medium/small), 47->49 (tiny) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Change languages * Bump js version * add PP-OCRv6 English docs: algorithm doc + update model tables Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Use default model * Update doc * Update mcp docs * update PP-OCRv6 algorithm docs and mkdocs nav: sync speed table with paper Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Support more params * Fix MCP * update READMEs and index docs: PP-OCRv5 -> PP-OCRv6 features Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update sdk * Fix bugs * Fix unsaved * Bump versions * Fix bugs * updata readme --------- Co-authored-by: weixin_46524038 <weixin_46524038@noreply.gitcode.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: zhangyubo0722 <zhangyubo0722@163.com> | 4 months ago |
| ci,docs: align PaddleX install branch and document py3.8 extras boundary (#17954) * ci,docs: align PaddleX install branch and document py3.8 extras boundary - CI: derive the PaddleX install branch from the paddlex constraint in pyproject.toml (release/X.Y) so PR/GPU tests stay in sync as the paddleocr series advances; apply to both tests.yml and test_gpu.yml - CI: install only paddleocr[doc2md] on py3.8 since several paddlex transitive deps require py3.9+; add a py38_incompatible pytest marker and gate affected tests behind it - CI: pin paddlepaddle==3.0.0 on py3.8 / 3.1.0 on py3.9+ (match GPU CI) - CI: standardize workflow filenames (.yaml -> .yml, dashes -> underscores) - deps: pin lmdb<1.5 on py3.8 (newer lmdb wheels reference Py_SET_REFCNT, a py3.9 stdlib C API) - docs: note Python 3.8+ for base paddleocr/doc2md; py3.9+ for doc-parser/ie/trans/all extras (safetensors>=0.7 dropped py3.8) - docs: update PaddleOCR-VL manual-install Python range to 3.9-3.13 across all hardware variants (VL pipelines use doc-parser) - tests: tag tests that require py3.9+ extras/deps with py38_incompatible Signed-off-by: Bvicii <yizhanhuang2002@gmail.com> * ci: mark /workspace as git safe.directory in GPU runner setuptools_scm runs git to derive the package version during pip install -e .; inside the GPU CI container /workspace is owned by the host user, which trips git's dubious-ownership check and aborts the paddleocr install. Signed-off-by: Bvicii <yizhanhuang2002@gmail.com> --------- Signed-off-by: Bvicii <yizhanhuang2002@gmail.com> | 5 months ago |
| 【OCR Issue No.12】Modify the setuptools configuration from SETUP.py into PYPROJECT.toml (#12013) Modify the setuptools configuration from SETUP.py into PYPROJECT.toml | 2 years ago |
| Update docs for a better experience. (#16419) | 1 year ago |