Mali Visual Structured Engine - Electrical Engineering Edition
← Back to Home

Getting Started | 快速开始

  1. Upload files — Click the upload area or drag images/PDF into it. Supports PNG, JPG, JPEG, WEBP, and PDF.
  2. Click "Recognize" — The system sends files to the OCR engine for processing.
  3. View results — Each page shows recognized text, bounding boxes, and confidence score.
  4. Download Excel — Click "Download Excel" to export structured results with page number, block number, coordinates, text, and confidence.

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.

Supported Formats | 支持的格式

TypeExtensionsMax SizeNotes
Images.png .jpg .jpeg .webp50 MB / fileRecommended: 300+ DPI scan
PDF.pdf50 MB / fileAuto page-by-page rendering
BatchMixed50 MB / fileUpload multiple files at once

OCR Engine | OCR 引擎

The system uses RapidOCR (ONNX Runtime + PaddleOCR models) as the primary engine, optimized for Chinese + English mixed text — ideal for electrical engineering drawings.

High Accuracy

Typical confidence: 94% - 99%+ for printed text

Bounding Boxes

Each text block includes pixel-level coordinates

Chinese Optimized

PaddleOCR models tuned for Chinese + English

Fast Processing

~1-2 seconds per page (after model warmup)

Queue System | 排队系统

During peak usage, requests are queued to ensure fair access and prevent timeouts:

API Reference | API 文档

POST /api/ocr

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', []))}")

GET /api/health

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 }

GET /api/queue

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 }

Response Structure | 返回结构

{ "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]] } ] } ] }

Excel Export | Excel 导出

Click the "Download Excel" button after recognition to export a .xls file with the following columns:

ColumnDescription
PagePage number (1-based)
Block #Text block index within the page
Box (x, y, w, h)Bounding box coordinates in pixels
TextRecognized text content
ConfidenceRecognition confidence (0-100%)

FAQ | 常见问题

What types of drawings are supported? | 支持哪些类型的图纸?

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.

Why is the first request slower? | 为什么第一次请求较慢?

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.

How accurate is the OCR? | OCR 识别准确率如何?

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.

What are bounding boxes? | 什么是边界框?

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.

Is there a file limit? | 有文件大小限制吗?

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.

How does the queue work? | 排队机制是怎样的?

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.

Can I use the API programmatically? | 可以通过 API 编程调用吗?

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.

Where is my data stored? | 我的数据存储在哪里?

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.

Tips for Best Results | 最佳实践建议