Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
aidenwu0209 avatar

Paddleocr Text Recognition

  • 3.9k installs
  • 35 repo stars
  • Updated July 21, 2026
  • aidenwu0209/paddleocr-skills

paddleocr-text-recognition is an agent skill for run paddleocr text recognition on images and documents with layout-aware extraction workflows.

About

The paddleocr-text-recognition skill >-. Trigger keywords (routing): Bilingual trigger terms (Chinese and English) are listed in the YAML description above use that field for discovery and routing. - Extract text from images (screenshots, photos, scans) - Extract text from PDFs or document images when the goal is line/box-level text, not recovering table grids, formulas, or full reading-order layout - Extract text from URLs or local files that point to images/PDFs - Plain text files, code files, or markdown documents that can be read directly as text - Documents with tables, formulas, charts, or complex layouts use Document Parsing instead - Tasks that do not involve image-to-text conversion Scripts declare their dependencies inline (PEP 723). No separate install step is needed uv resolves dependencies automatically: Scripts declare their dependencies inline (PEP 723). No separate install step is needed — uv resolves dependencies automatically: bash uv run scripts/ocr_caller.py --help Working directory: All uv run scripts/... commands below should be run from this skill's root directory (the directory containing this SKILL.md file). 1.

  • Extract text from images (screenshots, photos, scans)
  • Extract text from PDFs or document images when the goal is line/box-level text, not recovering table grids, formulas, or
  • Extract text from URLs or local files that point to images/PDFs
  • Plain text files, code files, or markdown documents that can be read directly as text
  • Documents with tables, formulas, charts, or complex layouts — use Document Parsing instead

Paddleocr Text Recognition by the numbers

  • 3,862 all-time installs (skills.sh)
  • +30 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Ranked #23 of 2,064 Data Science & ML skills by installs in the Skillselion catalog
  • Security screen: MEDIUM risk (skills.sh audit)
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

paddleocr-text-recognition capabilities & compatibility

Capabilities
extract text from images (screenshots, photos, s · extract text from pdfs or document images when t · extract text from urls or local files that point · plain text files, code files, or markdown docume · documents with tables, formulas, charts, or comp
Use cases
pdf parsing · data analysis
From the docs

What paddleocr-text-recognition says it does

1. **Identify the input source**:
SKILL.md
uv run scripts/ocr_caller.py --file-url "URL provided by user" --pretty
SKILL.md
uv run scripts/ocr_caller.py --file-path "file path" --pretty
SKILL.md
npx skills add https://github.com/aidenwu0209/paddleocr-skills --skill paddleocr-text-recognition

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs3.9k
repo stars35
Security audit2 / 3 scanners passed
Last updatedJuly 21, 2026
Repositoryaidenwu0209/paddleocr-skills

How do I run paddleocr text recognition on images and documents with layout-aware extraction workflows with documented agent guidance?

Run PaddleOCR text recognition on images and documents with layout-aware extraction workflows.

Who is it for?

Developers who need data science & ml help during build work.

Skip if: Skip when the task falls outside Data Science & ML scope described in SKILL.md.

When should I use this skill?

Run PaddleOCR text recognition on images and documents with layout-aware extraction workflows.

What you get

Completed data science & ml workflow aligned with SKILL.md steps and validation.

  • OCR JSON envelope
  • Extracted plain text
  • Raw provider result payload

By the numbers

  • Extract text from images (screenshots, photos, scans)
  • Extract text from PDFs or document images when the goal is line/box-level text, not recovering table grids, formulas, or
  • Extract text from URLs or local files that point to images/PDFs

Files

SKILL.mdMarkdownGitHub ↗

PaddleOCR Text Recognition Skill

When to Use This Skill

Trigger keywords (routing): Bilingual trigger terms (Chinese and English) are listed in the YAML description above—use that field for discovery and routing.

Use this skill for:

  • Extract text from images (screenshots, photos, scans)
  • Extract text from PDFs or document images when the goal is line/box-level text, not recovering table grids, formulas, or full reading-order layout
  • Extract text from URLs or local files that point to images/PDFs

Do not use for:

  • Plain text files, code files, or markdown documents that can be read directly as text
  • Documents with tables, formulas, charts, or complex layouts — use Document Parsing instead
  • Tasks that do not involve image-to-text conversion

Installation

Scripts declare their dependencies inline (PEP 723). No separate install step is needed — uv resolves dependencies automatically:

uv run scripts/ocr_caller.py --help

How to Use This Skill

Working directory: All uv run scripts/... commands below should be run from this skill's root directory (the directory containing this SKILL.md file).

Basic Workflow

1. Identify the input source:

  • User provides URL: Use the --file-url parameter
  • User provides local file path: Use the --file-path parameter

2. Execute OCR:

   uv run scripts/ocr_caller.py --file-url "URL provided by user" --pretty

Or for local files:

   uv run scripts/ocr_caller.py --file-path "file path" --pretty
Performance note: Parsing time scales with document complexity. Single-page images typically complete in 1-3 seconds; large PDFs (50+ pages) may take several minutes. Allow adequate time before assuming a timeout.

Default behavior: save raw JSON to a temp file:

  • If --output is omitted, the script saves automatically under the system temp directory
  • Default path pattern: <system-temp>/paddleocr/text-recognition/results/result_<timestamp>_<id>.json
  • If --output is provided, it overrides the default temp-file destination
  • If --stdout is provided, JSON is printed to stdout and no file is saved
  • In save mode, the script prints the absolute saved path on stderr: Result saved to: /absolute/path/...
  • In default/custom save mode, read and parse the saved JSON file before responding
  • Use --stdout only when you explicitly want to skip file persistence

3. Parse JSON response:

  • In default/custom save mode, load JSON from the saved file path shown by the script
  • Check the ok field: true means success, false means error
  • Extract text: text field contains all recognized text
  • If --stdout is used, parse the stdout JSON directly
  • Handle errors: If ok is false, display error.message

4. Present results to user:

  • Display extracted text in a readable format
  • If the text is empty, the image may contain no text
  • In save mode, always tell the user the saved file path and that full raw JSON is available there

What to Do After Extraction

Common next steps once you have the recognized text:

  • Save to file: Write the text field to a .txt or .md file
  • Search the content: Search the saved output file for keywords
  • Feed to another pipeline: The text field is clean plain text, ready for downstream processing
  • Poor results: See "Tips for Better Results" below before retrying

Complete Output Display

Always display the COMPLETE recognized text to the user. The user typically needs the full content for downstream use — truncation silently loses data they may not notice is missing.

  • Display the entire text field, no matter how long
  • Do not use phrases like "Here's a summary" or "The text begins with..."
  • Do not truncate with "..." unless the text truly exceeds reasonable display limits (>10,000 chars)

Example - Correct:

User: "Extract the text from this image"
Agent: I've extracted the text from the image. Here's the complete content:

[Display the entire text here]

Example - Incorrect:

User: "Extract the text from this image"
Agent: I found some text in the image. Here's a preview:
"The quick brown fox..." (truncated)

Understanding the Output

The script returns a JSON envelope with ok, text, result, and error fields. Use text for the recognized content; result contains the raw API response for debugging.

For the full schema and field-level details, see references/output_schema.md.

Raw result location (default): the temp-file path printed by the script on stderr

Usage Examples

Example 1: URL OCR

uv run scripts/ocr_caller.py --file-url "https://example.com/invoice.jpg" --pretty

Example 2: Local File OCR

uv run scripts/ocr_caller.py --file-path "./document.pdf" --pretty

Example 3: OCR With Explicit File Type

uv run scripts/ocr_caller.py --file-url "https://example.com/input" --file-type 1 --pretty
  • --file-type 0: PDF
  • --file-type 1: image
  • If omitted, the type is auto-detected from the file extension. For local files, a recognized extension (.pdf, .png, .jpg, .jpeg, .bmp, .tiff, .tif, .webp) is required; otherwise pass --file-type explicitly. For URLs with unrecognized extensions, the service attempts inference.

Example 4: Print JSON Without Saving

uv run scripts/ocr_caller.py --file-url "https://example.com/input" --stdout --pretty

First-Time Configuration

When API is not configured, the script outputs:

{
  "ok": false,
  "text": "",
  "result": null,
  "error": {
    "code": "CONFIG_ERROR",
    "message": "PADDLEOCR_OCR_API_URL not configured. Get your API at: https://paddleocr.com"
  }
}

Configuration workflow:

1. Show the exact error message to the user.

2. Guide the user to obtain credentials: Visit the PaddleOCR website, click API, select the PP-OCRv5 model, select the language, then copy the API_URL and Token. They map to these environment variables:

  • PADDLEOCR_OCR_API_URL — full endpoint URL ending with /ocr
  • PADDLEOCR_ACCESS_TOKEN — 40-character alphanumeric string

Optionally configure PADDLEOCR_OCR_TIMEOUT for request timeout. Recommend using the host application's standard configuration method rather than pasting credentials in chat.

3. Apply credentials — one of:

  • User configured via the host UI: ask the user to confirm, then retry.
  • User pastes credentials in chat: warn that they may be stored in conversation history, help the user persist them using the host's standard configuration method, then retry.

Error Handling

All errors return JSON with ok: false. Show the error message and stop — do not fall back to your own vision capabilities. Identify the issue from error.code and error.message:

Authentication failed (403)error.message contains "Authentication failed"

  • Token is invalid, reconfigure with correct credentials

Quota exceeded (429)error.message contains "API rate limit exceeded"

  • Daily API quota exhausted, inform user to wait or upgrade

Unsupported formaterror.message contains "Unsupported file format"

  • File format not supported, convert to PDF/PNG/JPG

No text detected:

  • text field is empty
  • Image may be blank, corrupted, or contain no text

Tips for Better Results

If recognition quality is poor:

  • Low resolution: Provide a higher resolution image (≥300 DPI works well for most printed text)
  • Noisy background: A cleaner scan or screenshot typically yields better results than a phone photo
  • Check confidence: The raw JSON (result.result.ocrResults[n].prunedResult.rec_scores) shows per-line confidence scores — low values identify uncertain regions worth reviewing

Reference Documentation

  • references/output_schema.md — Full output schema, field descriptions, and command examples
Note: Model version, capabilities, and supported file formats are determined by your API endpoint (PADDLEOCR_OCR_API_URL) and its official API documentation.

Testing the Skill

To verify the skill is working properly:

uv run scripts/smoke_test.py
uv run scripts/smoke_test.py --skip-api-test
uv run scripts/smoke_test.py --test-url "https://..."

The first form tests configuration and API connectivity. --skip-api-test checks configuration only. --test-url overrides the default sample image URL.

Related skills

How it compares

paddleocr-text-recognition is an agent skill for run paddleocr text recognition on images and documents with layout-aware extraction workflows, not a generic alternative.

FAQ

Who is paddleocr-text-recognition for?

Developers using Data Science & ML workflows with agent-guided SKILL.md steps.

When should I use paddleocr-text-recognition?

Run PaddleOCR text recognition on images and documents with layout-aware extraction workflows.

Is paddleocr-text-recognition safe to install?

Review the Security Audits panel on this page before installing in production.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.