Tip | 提示
PDF files are automatically rendered page-by-page at 300 DPI. Each page is processed independently, so a failed page does not affect others.
| Type | Extensions | Max Size | Notes |
|---|---|---|---|
| Images | .png .jpg .jpeg .webp | 50 MB / file | Recommended: 300+ DPI scan |
| 50 MB / file | Auto page-by-page rendering | ||
| Batch | Mixed | 50 MB / file | Upload multiple files at once |
The system uses RapidOCR (ONNX Runtime + PaddleOCR models) as the primary engine, optimized for Chinese + English mixed text — ideal for electrical engineering drawings.
Typical confidence: 94% - 99%+ for printed text
Each text block includes pixel-level coordinates
PaddleOCR models tuned for Chinese + English
~1-2 seconds per page (after model warmup)
During peak usage, requests are queued to ensure fair access and prevent timeouts:
Upload files for OCR recognition. Returns structured results with text and bounding boxes.
POST https://vse.mlyq100.com/api/ocr
Content-Type: multipart/form-data
Form Fields:
files[] - (required) One or more image/PDF files
engine - (optional) "rapidocr" | "tesseract" | "auto" (default: auto)
lang - (optional) Language, e.g. "chi_sim+eng" (default: chi_sim+eng)
dpi - (optional) PDF render DPI (default: 300)Example (cURL):
curl -X POST https://vse.mlyq100.com/api/ocr \
-F "files=@drawing-page1.png" \
-F "files=@drawing-page2.png"Example (Python):
import requests
resp = requests.post(
"https://vse.mlyq100.com/api/ocr",
files=[("files", ("page1.png", open("page1.png","rb"), "image/png"))]
)
data = resp.json()
for page in data["results"]:
print(f"Page {page['page']}: {page['text']}")
print(f" Confidence: {page['confidence_avg']:.1%}")
print(f" Text blocks: {len(page.get('boxes', []))}")Returns server status, version, and queue information.
GET https://vse.mlyq100.com/api/health
Response:
{
"status": "ok",
"version": "1.2.0",
"ocr_engine": "remote-174-rapidocr-paddle",
"region": "Hong Kong",
"max_concurrent": 6,
"active_requests": 0,
"queue_waiting": 0
}Returns current queue status. Use for polling before submitting large batches.
GET https://vse.mlyq100.com/api/queue
Response:
{
"max_concurrent": 6,
"active": 2,
"waiting": 0,
"available_slots": 4
}{
"success": true,
"task_id": "3654de91",
"elapsed_ms": 1419.37,
"queue_wait_ms": 0.16,
"engine": "rapidocr-paddle-174",
"results": [
{
"page": 1,
"success": true,
"engine": "rapidocr",
"text": "recognized full text on this page",
"confidence_avg": 0.9904,
"elapsed_ms": 620.27,
"boxes": [
{
"text": "text block content",
"confidence": 0.989,
"box": [[51,51], [123,51], [123,62], [51,62]]
}
]
}
]
}Click the "Download Excel" button after recognition to export a .xls file with the following columns:
| Column | Description |
|---|---|
| Page | Page number (1-based) |
| Block # | Text block index within the page |
| Box (x, y, w, h) | Bounding box coordinates in pixels |
| Text | Recognized text content |
| Confidence | Recognition confidence (0-100%) |
Any image or PDF containing text. The engine is optimized for electrical engineering drawings, schematics, nameplate photos, and technical documents. Both Chinese and English text are supported.
The OCR model needs a "warm-up" period on first use (~2-3 seconds). Subsequent requests are much faster (~1 second per page). If the server has been idle for a while, the first request may again experience a brief warm-up.
For clearly printed text, the typical confidence score is 94% - 99%+. Handwritten text, blurry scans, or very small fonts may result in lower accuracy. We recommend using high-resolution scans (300 DPI or higher) for best results.
Each recognized text block comes with pixel-level coordinates (a 4-point polygon) showing exactly where the text is located on the image. This is useful for automated processing, layout analysis, and data extraction pipelines.
Each file must be under 50 MB. You can upload multiple files at once. For very large PDFs (100+ pages), consider splitting them into smaller batches to avoid timeouts.
The server processes up to 6 requests simultaneously. If you submit when all slots are busy, your request enters a queue and starts automatically when a slot becomes available. The progress bar on the page shows your queue position in real-time.
Yes. Send a POST request to /api/ocr with your files as multipart form data. See the API Reference section above for examples in cURL and Python.
Files are processed in memory and temporarily stored only during processing. They are deleted immediately after the OCR response is returned. We do not retain your uploaded files or recognition results.