{
  "schemaVersion": "1.0",
  "item": {
    "slug": "paddleocr-doc-parsing",
    "name": "PaddleOCR Document Parsing",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Bobholamovic/paddleocr-doc-parsing",
    "canonicalUrl": "https://clawhub.ai/Bobholamovic/paddleocr-doc-parsing",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/paddleocr-doc-parsing",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=paddleocr-doc-parsing",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/smoke_test.py",
      "scripts/requirements.txt",
      "scripts/lib.py",
      "scripts/split_pdf.py",
      "scripts/optimize_file.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "paddleocr-doc-parsing",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-06T20:48:29.069Z",
      "expiresAt": "2026-05-13T20:48:29.069Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=paddleocr-doc-parsing",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=paddleocr-doc-parsing",
        "contentDisposition": "attachment; filename=\"paddleocr-doc-parsing-2.0.16.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "paddleocr-doc-parsing"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/paddleocr-doc-parsing"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/paddleocr-doc-parsing",
    "agentPageUrl": "https://openagent3.xyz/skills/paddleocr-doc-parsing/agent",
    "manifestUrl": "https://openagent3.xyz/skills/paddleocr-doc-parsing/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/paddleocr-doc-parsing/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "When to Use This Skill",
        "body": "Use Document Parsing for:\n\nDocuments with tables (invoices, financial reports, spreadsheets)\nDocuments with mathematical formulas (academic papers, scientific documents)\nDocuments with charts and diagrams\nMulti-column layouts (newspapers, magazines, brochures)\nComplex document structures requiring layout analysis\nAny document requiring structured understanding\n\nUse Text Recognition instead for:\n\nSimple text-only extraction\nQuick OCR tasks where speed is critical\nScreenshots or simple images with clear text"
      },
      {
        "title": "Installation",
        "body": "Install Python dependencies before using this skill. From the skill directory (skills/paddleocr-doc-parsing):\n\npip install -r scripts/requirements.txt\n\nOptional — for document optimization and split_pdf.py (page extraction):\n\npip install -r scripts/requirements-optimize.txt"
      },
      {
        "title": "How to Use This Skill",
        "body": "⛔ MANDATORY RESTRICTIONS - DO NOT VIOLATE ⛔\n\nONLY use PaddleOCR Document Parsing API - Execute the script python scripts/vl_caller.py\nNEVER parse documents directly - Do NOT parse documents yourself\nNEVER offer alternatives - Do NOT suggest \"I can try to analyze it\" or similar\nIF API fails - Display the error message and STOP immediately\nNO fallback methods - Do NOT attempt document parsing any other way\n\nIf the script execution fails (API not configured, network error, etc.):\n\nShow the error message to the user\nDo NOT offer to help using your vision capabilities\nDo NOT ask \"Would you like me to try parsing it?\"\nSimply stop and wait for user to fix the configuration"
      },
      {
        "title": "Basic Workflow",
        "body": "Execute document parsing:\npython scripts/vl_caller.py --file-url \"URL provided by user\" --pretty\n\nOr for local files:\npython scripts/vl_caller.py --file-path \"file path\" --pretty\n\nOptional: explicitly set file type:\npython scripts/vl_caller.py --file-url \"URL provided by user\" --file-type 0 --pretty\n\n\n--file-type 0: PDF\n--file-type 1: image\nIf omitted, the service can infer file type from input.\n\nDefault behavior: save raw JSON to a temp file:\n\nIf --output is omitted, the script saves automatically under the system temp directory\nDefault path pattern: <system-temp>/paddleocr/doc-parsing/results/result_<timestamp>_<id>.json\nIf --output is provided, it overrides the default temp-file destination\nIf --stdout is provided, JSON is printed to stdout and no file is saved\nIn save mode, the script prints the absolute saved path on stderr: Result saved to: /absolute/path/...\nIn default/custom save mode, read and parse the saved JSON file before responding\nIn save mode, always tell the user the saved file path and that full raw JSON is available there\nUse --stdout only when you explicitly want to skip file persistence\n\n\n\nThe output JSON contains COMPLETE content with all document data:\n\nHeaders, footers, page numbers\nMain text content\nTables with structure\nFormulas (with LaTeX)\nFigures and charts\nFootnotes and references\nSeals and stamps\nLayout and reading order\n\nInput type note:\n\nSupported file types depend on the model and endpoint configuration.\nAlways follow the file type constraints documented by your endpoint API.\n\n\n\nExtract what the user needs from the output JSON using these fields:\n\nTop-level text\nresult[n].markdown\nresult[n].prunedResult"
      },
      {
        "title": "IMPORTANT: Complete Content Display",
        "body": "CRITICAL: You must display the COMPLETE extracted content to the user based on their needs.\n\nThe output JSON contains ALL document content in a structured format\nIn save mode, the raw provider result can be inspected in the saved JSON file\nDisplay the full content requested by the user, do NOT truncate or summarize\nIf user asks for \"all text\", show the entire text field\nIf user asks for \"tables\", show ALL tables in the document\nIf user asks for \"main content\", filter out headers/footers but show ALL body text\n\nWhat this means:\n\nDO: Display complete text, all tables, all formulas as requested\nDO: Present content using these fields: top-level text, result[n].markdown, and result[n].prunedResult\nDON'T: Truncate with \"...\" unless content is excessively long (>10,000 chars)\nDON'T: Summarize or provide excerpts when user asks for full content\nDON'T: Say \"Here's a preview\" when user expects complete output\n\nExample - Correct:\n\nUser: \"Extract all the text from this document\"\nAgent: I've parsed the complete document. Here's all the extracted text:\n\n[Display entire text field or concatenated regions in reading order]\n\nDocument Statistics:\n- Total regions: 25\n- Text blocks: 15\n- Tables: 3\n- Formulas: 2\nQuality: Excellent (confidence: 0.92)\n\nExample - Incorrect:\n\nUser: \"Extract all the text\"\nAgent: \"I found a document with multiple sections. Here's the beginning:\n'Introduction...' (content truncated for brevity)\""
      },
      {
        "title": "Understanding the JSON Response",
        "body": "The output JSON uses an envelope wrapping the raw API result:\n\n{\n  \"ok\": true,\n  \"text\": \"Full markdown/HTML text extracted from all pages\",\n  \"result\": { ... },  // raw provider response\n  \"error\": null\n}\n\nKey fields:\n\ntext — extracted markdown text from all pages (use this for quick text display)\nresult - raw provider response object\nresult[n].prunedResult - structured parsing output for each page (layout/content/confidence and related metadata)\nresult[n].markdown — full rendered page output in markdown/HTML\n\nRaw result location (default): the temp-file path printed by the script on stderr"
      },
      {
        "title": "Usage Examples",
        "body": "Example 1: Extract Full Document Text\n\npython scripts/vl_caller.py \\\n  --file-url \"https://example.com/paper.pdf\" \\\n  --pretty\n\nThen use:\n\nTop-level text for quick full-text output\nresult[n].markdown when page-level output is needed\n\nExample 2: Extract Structured Page Data\n\npython scripts/vl_caller.py \\\n  --file-path \"./financial_report.pdf\" \\\n  --pretty\n\nThen use:\n\nresult[n].prunedResult for structured parsing data (layout/content/confidence)\nresult[n].markdown for rendered page content\n\nExample 3: Print JSON Without Saving\n\npython scripts/vl_caller.py \\\n  --file-url \"URL\" \\\n  --stdout \\\n  --pretty\n\nThen return:\n\nFull text when user asks for full document content\nresult[n].prunedResult and result[n].markdown when user needs complete structured page data"
      },
      {
        "title": "First-Time Configuration",
        "body": "When API is not configured:\n\nThe error will show:\n\nCONFIG_ERROR: PADDLEOCR_DOC_PARSING_API_URL not configured. Get your API at: https://paddleocr.com\n\nConfiguration workflow:\n\nShow the exact error message to the user (including the URL).\n\n\nGuide the user to configure securely:\n\nRecommend configuring through the host application's standard method (e.g., settings file, environment variable UI) rather than pasting credentials in chat.\nList the required environment variables:\n- PADDLEOCR_DOC_PARSING_API_URL\n- PADDLEOCR_ACCESS_TOKEN\n- Optional: PADDLEOCR_DOC_PARSING_TIMEOUT\n\n\n\n\n\nIf the user provides credentials in chat anyway (accept any reasonable format), for example:\n\nPADDLEOCR_DOC_PARSING_API_URL=https://xxx.paddleocr.com/layout-parsing, PADDLEOCR_ACCESS_TOKEN=abc123...\nHere's my API: https://xxx and token: abc123\nCopy-pasted code format\nAny other reasonable format\nSecurity note: Warn the user that credentials shared in chat may be stored in conversation history. Recommend setting them through the host application's configuration instead when possible.\n\nThen parse and validate the values:\n\nExtract PADDLEOCR_DOC_PARSING_API_URL (look for URLs with paddleocr.com or similar)\nConfirm PADDLEOCR_DOC_PARSING_API_URL is a full endpoint ending with /layout-parsing\nExtract PADDLEOCR_ACCESS_TOKEN (long alphanumeric string, usually 40+ chars)\n\n\n\nAsk the user to confirm the environment is configured.\n\n\nRetry only after confirmation:\n\nOnce the user confirms the environment variables are available, retry the original parsing task"
      },
      {
        "title": "Handling Large Files",
        "body": "There is no file size limit for the API. For PDFs, the maximum is 100 pages per request.\n\nTips for large files:\n\nUse URL for Large Local Files (Recommended)\n\nFor very large local files, prefer --file-url over --file-path to avoid base64 encoding overhead:\n\npython scripts/vl_caller.py --file-url \"https://your-server.com/large_file.pdf\"\n\nProcess Specific Pages (PDF Only)\n\nIf you only need certain pages from a large PDF, extract them first:\n\n# Extract pages 1-5\npython scripts/split_pdf.py large.pdf pages_1_5.pdf --pages \"1-5\"\n\n# Mixed ranges are supported\npython scripts/split_pdf.py large.pdf selected_pages.pdf --pages \"1-5,8,10-12\"\n\n# Then process the smaller file\npython scripts/vl_caller.py --file-path \"pages_1_5.pdf\""
      },
      {
        "title": "Error Handling",
        "body": "Authentication failed (403):\n\nerror: Authentication failed\n\n→ Token is invalid, reconfigure with correct credentials\n\nAPI quota exceeded (429):\n\nerror: API quota exceeded\n\n→ Daily API quota exhausted, inform user to wait or upgrade\n\nUnsupported format:\n\nerror: Unsupported file format\n\n→ File format not supported, convert to PDF/PNG/JPG"
      },
      {
        "title": "Important Notes",
        "body": "The script NEVER filters content - It always returns complete data\nThe AI agent decides what to present - Based on user's specific request\nAll data is always available - Can be re-interpreted for different needs\nNo information is lost - Complete document structure preserved"
      },
      {
        "title": "Reference Documentation",
        "body": "references/output_schema.md - Output format specification\n\nNote: Model version and capabilities are determined by your API endpoint (PADDLEOCR_DOC_PARSING_API_URL).\n\nLoad these reference documents into context when:\n\nDebugging complex parsing issues\nNeed to understand output format\nWorking with provider API details"
      },
      {
        "title": "Testing the Skill",
        "body": "To verify the skill is working properly:\n\npython scripts/smoke_test.py\n\nThis tests configuration and optionally API connectivity."
      }
    ],
    "body": "PaddleOCR Document Parsing Skill\nWhen to Use This Skill\n\nUse Document Parsing for:\n\nDocuments with tables (invoices, financial reports, spreadsheets)\nDocuments with mathematical formulas (academic papers, scientific documents)\nDocuments with charts and diagrams\nMulti-column layouts (newspapers, magazines, brochures)\nComplex document structures requiring layout analysis\nAny document requiring structured understanding\n\nUse Text Recognition instead for:\n\nSimple text-only extraction\nQuick OCR tasks where speed is critical\nScreenshots or simple images with clear text\nInstallation\n\nInstall Python dependencies before using this skill. From the skill directory (skills/paddleocr-doc-parsing):\n\npip install -r scripts/requirements.txt\n\n\nOptional — for document optimization and split_pdf.py (page extraction):\n\npip install -r scripts/requirements-optimize.txt\n\nHow to Use This Skill\n\n⛔ MANDATORY RESTRICTIONS - DO NOT VIOLATE ⛔\n\nONLY use PaddleOCR Document Parsing API - Execute the script python scripts/vl_caller.py\nNEVER parse documents directly - Do NOT parse documents yourself\nNEVER offer alternatives - Do NOT suggest \"I can try to analyze it\" or similar\nIF API fails - Display the error message and STOP immediately\nNO fallback methods - Do NOT attempt document parsing any other way\n\nIf the script execution fails (API not configured, network error, etc.):\n\nShow the error message to the user\nDo NOT offer to help using your vision capabilities\nDo NOT ask \"Would you like me to try parsing it?\"\nSimply stop and wait for user to fix the configuration\nBasic Workflow\n\nExecute document parsing:\n\npython scripts/vl_caller.py --file-url \"URL provided by user\" --pretty\n\n\nOr for local files:\n\npython scripts/vl_caller.py --file-path \"file path\" --pretty\n\n\nOptional: explicitly set file type:\n\npython scripts/vl_caller.py --file-url \"URL provided by user\" --file-type 0 --pretty\n\n--file-type 0: PDF\n--file-type 1: image\nIf omitted, the service can infer file type from input.\n\nDefault behavior: save raw JSON to a temp file:\n\nIf --output is omitted, the script saves automatically under the system temp directory\nDefault path pattern: <system-temp>/paddleocr/doc-parsing/results/result_<timestamp>_<id>.json\nIf --output is provided, it overrides the default temp-file destination\nIf --stdout is provided, JSON is printed to stdout and no file is saved\nIn save mode, the script prints the absolute saved path on stderr: Result saved to: /absolute/path/...\nIn default/custom save mode, read and parse the saved JSON file before responding\nIn save mode, always tell the user the saved file path and that full raw JSON is available there\nUse --stdout only when you explicitly want to skip file persistence\n\nThe output JSON contains COMPLETE content with all document data:\n\nHeaders, footers, page numbers\nMain text content\nTables with structure\nFormulas (with LaTeX)\nFigures and charts\nFootnotes and references\nSeals and stamps\nLayout and reading order\n\nInput type note:\n\nSupported file types depend on the model and endpoint configuration.\nAlways follow the file type constraints documented by your endpoint API.\n\nExtract what the user needs from the output JSON using these fields:\n\nTop-level text\nresult[n].markdown\nresult[n].prunedResult\nIMPORTANT: Complete Content Display\n\nCRITICAL: You must display the COMPLETE extracted content to the user based on their needs.\n\nThe output JSON contains ALL document content in a structured format\nIn save mode, the raw provider result can be inspected in the saved JSON file\nDisplay the full content requested by the user, do NOT truncate or summarize\nIf user asks for \"all text\", show the entire text field\nIf user asks for \"tables\", show ALL tables in the document\nIf user asks for \"main content\", filter out headers/footers but show ALL body text\n\nWhat this means:\n\nDO: Display complete text, all tables, all formulas as requested\nDO: Present content using these fields: top-level text, result[n].markdown, and result[n].prunedResult\nDON'T: Truncate with \"...\" unless content is excessively long (>10,000 chars)\nDON'T: Summarize or provide excerpts when user asks for full content\nDON'T: Say \"Here's a preview\" when user expects complete output\n\nExample - Correct:\n\nUser: \"Extract all the text from this document\"\nAgent: I've parsed the complete document. Here's all the extracted text:\n\n[Display entire text field or concatenated regions in reading order]\n\nDocument Statistics:\n- Total regions: 25\n- Text blocks: 15\n- Tables: 3\n- Formulas: 2\nQuality: Excellent (confidence: 0.92)\n\n\nExample - Incorrect:\n\nUser: \"Extract all the text\"\nAgent: \"I found a document with multiple sections. Here's the beginning:\n'Introduction...' (content truncated for brevity)\"\n\nUnderstanding the JSON Response\n\nThe output JSON uses an envelope wrapping the raw API result:\n\n{\n  \"ok\": true,\n  \"text\": \"Full markdown/HTML text extracted from all pages\",\n  \"result\": { ... },  // raw provider response\n  \"error\": null\n}\n\n\nKey fields:\n\ntext — extracted markdown text from all pages (use this for quick text display)\nresult - raw provider response object\nresult[n].prunedResult - structured parsing output for each page (layout/content/confidence and related metadata)\nresult[n].markdown — full rendered page output in markdown/HTML\n\nRaw result location (default): the temp-file path printed by the script on stderr\n\nUsage Examples\n\nExample 1: Extract Full Document Text\n\npython scripts/vl_caller.py \\\n  --file-url \"https://example.com/paper.pdf\" \\\n  --pretty\n\n\nThen use:\n\nTop-level text for quick full-text output\nresult[n].markdown when page-level output is needed\n\nExample 2: Extract Structured Page Data\n\npython scripts/vl_caller.py \\\n  --file-path \"./financial_report.pdf\" \\\n  --pretty\n\n\nThen use:\n\nresult[n].prunedResult for structured parsing data (layout/content/confidence)\nresult[n].markdown for rendered page content\n\nExample 3: Print JSON Without Saving\n\npython scripts/vl_caller.py \\\n  --file-url \"URL\" \\\n  --stdout \\\n  --pretty\n\n\nThen return:\n\nFull text when user asks for full document content\nresult[n].prunedResult and result[n].markdown when user needs complete structured page data\nFirst-Time Configuration\n\nWhen API is not configured:\n\nThe error will show:\n\nCONFIG_ERROR: PADDLEOCR_DOC_PARSING_API_URL not configured. Get your API at: https://paddleocr.com\n\n\nConfiguration workflow:\n\nShow the exact error message to the user (including the URL).\n\nGuide the user to configure securely:\n\nRecommend configuring through the host application's standard method (e.g., settings file, environment variable UI) rather than pasting credentials in chat.\nList the required environment variables:\n- PADDLEOCR_DOC_PARSING_API_URL\n- PADDLEOCR_ACCESS_TOKEN\n- Optional: PADDLEOCR_DOC_PARSING_TIMEOUT\n\n\nIf the user provides credentials in chat anyway (accept any reasonable format), for example:\n\nPADDLEOCR_DOC_PARSING_API_URL=https://xxx.paddleocr.com/layout-parsing, PADDLEOCR_ACCESS_TOKEN=abc123...\nHere's my API: https://xxx and token: abc123\nCopy-pasted code format\nAny other reasonable format\nSecurity note: Warn the user that credentials shared in chat may be stored in conversation history. Recommend setting them through the host application's configuration instead when possible.\n\nThen parse and validate the values:\n\nExtract PADDLEOCR_DOC_PARSING_API_URL (look for URLs with paddleocr.com or similar)\nConfirm PADDLEOCR_DOC_PARSING_API_URL is a full endpoint ending with /layout-parsing\nExtract PADDLEOCR_ACCESS_TOKEN (long alphanumeric string, usually 40+ chars)\n\nAsk the user to confirm the environment is configured.\n\nRetry only after confirmation:\n\nOnce the user confirms the environment variables are available, retry the original parsing task\nHandling Large Files\n\nThere is no file size limit for the API. For PDFs, the maximum is 100 pages per request.\n\nTips for large files:\n\nUse URL for Large Local Files (Recommended)\n\nFor very large local files, prefer --file-url over --file-path to avoid base64 encoding overhead:\n\npython scripts/vl_caller.py --file-url \"https://your-server.com/large_file.pdf\"\n\nProcess Specific Pages (PDF Only)\n\nIf you only need certain pages from a large PDF, extract them first:\n\n# Extract pages 1-5\npython scripts/split_pdf.py large.pdf pages_1_5.pdf --pages \"1-5\"\n\n# Mixed ranges are supported\npython scripts/split_pdf.py large.pdf selected_pages.pdf --pages \"1-5,8,10-12\"\n\n# Then process the smaller file\npython scripts/vl_caller.py --file-path \"pages_1_5.pdf\"\n\nError Handling\n\nAuthentication failed (403):\n\nerror: Authentication failed\n\n\n→ Token is invalid, reconfigure with correct credentials\n\nAPI quota exceeded (429):\n\nerror: API quota exceeded\n\n\n→ Daily API quota exhausted, inform user to wait or upgrade\n\nUnsupported format:\n\nerror: Unsupported file format\n\n\n→ File format not supported, convert to PDF/PNG/JPG\n\nImportant Notes\nThe script NEVER filters content - It always returns complete data\nThe AI agent decides what to present - Based on user's specific request\nAll data is always available - Can be re-interpreted for different needs\nNo information is lost - Complete document structure preserved\nReference Documentation\nreferences/output_schema.md - Output format specification\n\nNote: Model version and capabilities are determined by your API endpoint (PADDLEOCR_DOC_PARSING_API_URL).\n\nLoad these reference documents into context when:\n\nDebugging complex parsing issues\nNeed to understand output format\nWorking with provider API details\nTesting the Skill\n\nTo verify the skill is working properly:\n\npython scripts/smoke_test.py\n\n\nThis tests configuration and optionally API connectivity."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Bobholamovic/paddleocr-doc-parsing",
    "publisherUrl": "https://clawhub.ai/Bobholamovic/paddleocr-doc-parsing",
    "owner": "Bobholamovic",
    "version": "2.0.7",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/paddleocr-doc-parsing",
    "downloadUrl": "https://openagent3.xyz/downloads/paddleocr-doc-parsing",
    "agentUrl": "https://openagent3.xyz/skills/paddleocr-doc-parsing/agent",
    "manifestUrl": "https://openagent3.xyz/skills/paddleocr-doc-parsing/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/paddleocr-doc-parsing/agent.md"
  }
}