run-llama--liteparse
9f97f3abbe
CI - Python Bindings / sdist (push) Failing after 1s
CI - Python Bindings / Build x86_64-unknown-linux-musl (push) Failing after 1s
CI / fmt (push) Failing after 1s
E2E Output Validation / compare-outputs (push) Failing after 1s
Sync Docs to Developer Hub / sync-docs (push) Failing after 1s
CI - Python Bindings / Build x86_64-unknown-linux-gnu (push) Failing after 1s
CI - WASM Bindings / Build WASM (push) Failing after 0s
CI / clippy (push) Failing after 1s
CI / build-and-test (ubuntu-latest) (push) Failing after 0s
CI - WASM Bindings / Edge runtime PDF parse test (push) Has been skipped
CI - WASM Bindings / Browser PDF parse test (push) Has been skipped
Deploy Demo to GitHub Pages / deploy (push) Failing after 1s
CI / build-docker-image (push) Failing after 3s
CI - Node Bindings / Build darwin-x64 (push) Has been cancelled
CI - Node Bindings / Test win32-x64-msvc (push) Has been cancelled
CI - Node Bindings / Build linux-arm64-gnu (push) Has been cancelled
CI - Node Bindings / Build linux-x64-gnu (push) Has been cancelled
CI - Node Bindings / Build linux-x64-musl (push) Has been cancelled
CI - Node Bindings / Build win32-arm64-msvc (push) Has been cancelled
CI - Node Bindings / Build win32-x64-msvc (push) Has been cancelled
CI - Node Bindings / Test darwin-arm64 (push) Has been cancelled
CI - Node Bindings / Test darwin-x64 (push) Has been cancelled
CI - Node Bindings / Test linux-x64-gnu (push) Has been cancelled
CI - Node Bindings / Test linux-x64-musl (push) Has been cancelled
CI - Node Bindings / Test win32-arm64-msvc (push) Has been cancelled
CI - Python Bindings / Build aarch64-pc-windows-msvc (push) Has been cancelled
CI - Python Bindings / Build x86_64-pc-windows-msvc (push) Has been cancelled
CI - Python Bindings / Build x86_64-apple-darwin (push) Has been cancelled
CI - Python Bindings / Build aarch64-apple-darwin (push) Has been cancelled
CI - Python Bindings / Build aarch64-unknown-linux-gnu (push) Has been cancelled
CI - Node Bindings / Build darwin-arm64 (push) Has been cancelled
CI - Python Bindings / Test x86_64-apple-darwin (push) Has been cancelled
CI - Python Bindings / Test aarch64-apple-darwin (push) Has been cancelled
CI - Python Bindings / Test x86_64-unknown-linux-gnu (push) Has been cancelled
CI - Python Bindings / Test x86_64-unknown-linux-musl (push) Has been cancelled
CI - Python Bindings / Test aarch64-pc-windows-msvc (push) Has been cancelled
CI - Python Bindings / Test x86_64-pc-windows-msvc (push) Has been cancelled
CI / build-and-test (macos-26-intel) (push) Has been cancelled
CI / build-and-test (macos-latest) (push) Has been cancelled
CI / build-and-test (windows-11-arm) (push) Has been cancelled
CI / build-and-test (windows-latest) (push) Has been cancelled
E2E Output Validation / upload-dataset (push) Has been cancelled
129 行
3.0 KiB
Markdown
129 行
3.0 KiB
Markdown
# ocr/
|
|
|
|
Example OCR server implementations that conform to the LiteParse OCR API specification.
|
|
|
|
These servers allow you to use alternative OCR engines instead of the built-in Tesseract.js.
|
|
|
|
## Why Use an External OCR Server?
|
|
|
|
| Feature | Tesseract.js (built-in) | EasyOCR | PaddleOCR | Surya |
|
|
|---------|-------------------------|---------|-----------|-------|
|
|
| Setup | Zero (included) | uv | uv | uv |
|
|
| Speed | Moderate | Moderate | Fast (2-3x) | Moderate (GPU recommended) |
|
|
| Accuracy (Latin) | Good | Good | Good | Excellent |
|
|
| Accuracy (CJK) | Fair | Good | Excellent | Excellent |
|
|
| Languages | 100+ | 80+ | 80+ | 91 |
|
|
| Memory | In-process | Separate | Separate | Separate |
|
|
|
|
**Recommendations:**
|
|
- **Quick start**: Use built-in Tesseract (no setup)
|
|
- **Asian languages**: Use PaddleOCR (best CJK support)
|
|
- **Multilingual / broad scripts**: Use Surya (strong multilingual accuracy)
|
|
- **General use**: EasyOCR (good balance)
|
|
|
|
## Available Servers
|
|
|
|
### [easyocr/](./easyocr/)
|
|
Flask server wrapping EasyOCR library.
|
|
- Port: **8828**
|
|
- Good general-purpose OCR
|
|
- 80+ languages
|
|
|
|
### [paddleocr/](./paddleocr/)
|
|
Flask server wrapping PaddleOCR library.
|
|
- Port: **8829**
|
|
- Excellent for Chinese, Japanese, Korean
|
|
- 2-3x faster than EasyOCR
|
|
|
|
### [suryaocr/](./suryaocr/)
|
|
FastAPI server wrapping Surya OCR 2.
|
|
- Port: **8830**
|
|
- Multilingual foundation model (90+ languages)
|
|
- Block-level output; GPU recommended
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
# Start EasyOCR server
|
|
cd ocr/easyocr
|
|
uv run server.py
|
|
|
|
# OR start PaddleOCR server
|
|
cd ocr/paddleocr
|
|
uv run server.py
|
|
|
|
# OR start Surya OCR server
|
|
cd ocr/suryaocr
|
|
uv run server.py
|
|
```
|
|
|
|
Then use with LiteParse:
|
|
|
|
```bash
|
|
# CLI
|
|
lit parse document.pdf --ocr-server-url http://localhost:8828/ocr
|
|
|
|
# Code
|
|
const parser = new LiteParse({
|
|
ocrServerUrl: 'http://localhost:8828/ocr',
|
|
ocrLanguage: 'en',
|
|
});
|
|
```
|
|
|
|
## API Specification
|
|
|
|
All servers implement the same API (defined in `OCR_API_SPEC.md`):
|
|
|
|
**Endpoint:** `POST /ocr`
|
|
|
|
**Request:**
|
|
- Content-Type: `multipart/form-data`
|
|
- Fields:
|
|
- `file` - Image file
|
|
- `language` - Language code (e.g., 'en', 'zh', 'ja')
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"results": [
|
|
{
|
|
"text": "recognized text",
|
|
"bbox": [x1, y1, x2, y2],
|
|
"confidence": 0.95
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## Creating a Custom OCR Server
|
|
|
|
To implement your own OCR server:
|
|
|
|
1. Create a Flask/FastAPI/Express server
|
|
2. Accept `POST /ocr` with multipart form data
|
|
3. Return JSON with `results` array containing:
|
|
- `text` - Recognized text string
|
|
- `bbox` - Bounding box as `[x1, y1, x2, y2]`
|
|
- `confidence` - Confidence score (0-1)
|
|
|
|
4. (Optional) Implement `GET /health` endpoint
|
|
|
|
See the existing servers as reference implementations.
|
|
|
|
## Language Codes
|
|
|
|
Most servers accept ISO 639-1 codes (e.g., 'en', 'zh', 'ja') and map them internally:
|
|
|
|
| ISO Code | Language | Notes |
|
|
|----------|----------|-------|
|
|
| en | English | |
|
|
| zh | Chinese (Simplified) | |
|
|
| zh-tw | Chinese (Traditional) | |
|
|
| ja | Japanese | |
|
|
| ko | Korean | |
|
|
| fr | French | |
|
|
| de | German | |
|
|
| es | Spanish | |
|
|
| ar | Arabic | |
|
|
| hi | Hindi | |
|