High-accuracy OCR for images and scanned PDFs, powered by Python PaddleOCR.
- Enable PP-OCRv6 in Finch.
- Share an image or PDF and ask:
Extract text from this imageExtract text from this PDF
Setup happens automatically on first use (Python venv + pip install).
| Tool | Description |
|---|---|
ocr_image |
Start async OCR on an image (PNG, JPG, WebP, BMP, etc.) — returns a task ID |
ocr_pdf |
Start async OCR on a scanned PDF — returns a task ID |
check_ocr_task |
Poll a running task by task ID and retrieve the result when done |
ocr_cache |
View cached OCR results (age, expiry) |
clear_ocr_cache |
Clear all cached results |
setup_ocr |
Check environment and install dependencies |
ocr_status |
Quick health check |
Async flow:
ocr_image/ocr_pdflaunch a background process and return immediately with a task ID + estimated time. Finch will automatically callcheck_ocr_taskafter the estimated time to retrieve the result.
- Python 3.10 – 3.12
- Dependencies (
paddleocr,paddlepaddle,PyMuPDF,opencv-python,numpy) auto-installed on first use
OCR results are cached for 30 days, keyed by SHA-256 file hash. Same file = instant result without re-running OCR.
extensions/pp-ocrv6/
├── cache/
│ ├── index.json # hash → ISO timestamp
│ └── <sha256>.json # result file
- Cache files stored in
cache/directory alongside the extension index.jsonrecords creation time for quick expiry checks- Expired entries auto-cleaned on each new cache write
- Use
ocr_cacheto inspect,clear_ocr_cacheto purge
| Type | Suggested Limit | Notes |
|---|---|---|
| Single image | Unlimited | Automatically scaled if longest edge >3000px |
| PDF pages | Hundreds | 150 DPI rendering, two-pass blank skip (72 DPI preview then 150 DPI), blank pages auto-skipped |
| Single PDF page | Up to A0 | Very large drawings should be split first |
- Model warmup — cold start (~10s) handled once at the start of each PDF; subsequent predictions are instant
- Sequential page processing — pages are processed one at a time with a single model instance, maximizing reliability on macOS ARM (PaddlePaddle multiprocessing is unstable)
- Dynamic time estimation — per-page moving average shown in
check_ocr_taskprogress - PDF output includes page headers and confidence per page
- Cache stored in extension private data directory
All inference runs locally. Network access is only for initial model downloads (~150 MB).
MIT