PPOCR-ONNX Usage
Download Software
- Download from any link in the software download area: Software Download Area
- In cloud drive
Ocr Resourcesfolder, downloadppocr-windows-x64zip, extract — path must not contain Chinese or special characters
Software Usage
- Double-click
ppocr-monitor.exe— monitors OCR process and restarts it if it exits
- After opening, bottom shows port and server status
- OCR instance pool mode for efficiency and concurrency
- paddleOcrOnnxV5 min instances — minimum v5 model instances
- paddleOcrOnnxV5 max instances — v5 instance cap
- v4 instance counts work similarly
- Requests per second limit — adjust based on OCR latency
- CPUs per OCR instance — higher = faster OCR, more CPU; keep CPUs × max instances ≤ total CPU cores or you may hit 100% CPU
- Save settings and restart software
- Rebuild OCR pool — release old instances and recreate; frees previous memory
- Hide on startup — run in background/tray
API Calls
- Built-in HTTP API, default port 9022
- Upload image file: http://127.0.0.1:9022/devapi/ocrOnnxFile
- POST JSON base64: http://127.0.0.1:9022/devapi/ocrOnnxBase64
- For LAN, replace 127.0.0.1 with server PC IP
- For public internet, deploy to public server or use frp — replace 127.0.0.1 with public IP
ocrOnnxFile Example
- EC Android example; iOS and HarmonyOS Next use the same request pattern
function test_http_ppocr() { if (!startEnv()) { loge("Automation failed to start, exiting script") exit() } if (!image.requestScreenCapture(10000, 0)) { loge("Screenshot permission failed — check background popup, overlay, etc.") exit() } // Wait at least 1s after permission (more on slow devices) before screenshot sleep(1000)
for (let i = 0; i < 1; i++) { let img = image.captureFullScreenEx() if (!img) { loge("Screenshot failed") sleep(1000) continue } // paddleOcrOnnxV5 = PPOCR-V5, paddleOcrOnnxV4 = PPOCR-V4 let ocrType = "paddleOcrOnnxV5"; // padding — white border around image to improve recognition; default 10 let padding = 50; // maxSideLen — if max edge > maxSideLen, scale down proportionally; default 0 let maxSideLen = 0; try {
let url = `http://192.168.2.19:9022/devapi/ocrOnnxFile?ocrType=${ocrType}&padding=${padding}&maxSideLen=${maxSideLen}` console.log(`request url ${url}`) image.saveTo(img, "/sdcard/tb.png") let file = {"file": "/sdcard/tb.png"} console.time(1) let result = http.httpPost(url, {}, file, 20 * 1000, {}) logd("Request time: {} ms", console.timeEnd(1)) if (!result) { logw("No recognition result") sleep(1000) continue } logd("OCR result-> " + result) result = JSON.parse(result).data; for (let i = 0; i < result.length; i++) { let value = result[i] logd("Text: " + value.label+ " confidence: "+value.confidence + " x: " + value.x + " y: " + value.y + " width: " + value.width + " height: " + value.height) } sleep(1000) } catch (e) { logd(e) } finally { image.recycle(img) } } }
test_http_ppocr()ocrOnnxBase64 Example
function test_http_ppocr_base() {
if (!startEnv()) { loge("Automation failed to start, exiting script") exit() } if (!image.requestScreenCapture(10000, 0)) { loge("Screenshot permission failed — check background popup, overlay, etc.") exit() } sleep(1000)
for (let i = 0; i < 1; i++) { let img = image.captureFullScreenEx() if (!img) { loge("Screenshot failed") sleep(1000) continue } let ocrType = "paddleOcrOnnxV5"; let padding = 50; let maxSideLen = 0; try {
let url = `http://192.168.2.19:9022/devapi/ocrOnnxBase64` console.log(`request url ${url}`) let base = image.toBase64(img) let data = { "ocrType":ocrType, "padding":padding, "maxSideLen":maxSideLen, "data":base, } console.time(1) let result = http.postJSON(url, data, 20 * 1000, {}) logd("Request time: {} ms", console.timeEnd(1)) if (!result) { logw("No recognition result") sleep(1000) continue } logd("OCR result-> " + result) result = JSON.parse(result).data; for (let i = 0; i < result.length; i++) { let value = result[i] logd("Text: " + value.label+ " confidence: "+value.confidence + " x: " + value.x + " y: " + value.y + " width: " + value.width + " height: " + value.height) } sleep(1000) } catch (e) { logd(e) } finally { image.recycle(img) } }}test_http_ppocr_base();FAQ
- ppocr crashes on open
- Install VC runtime from cloud drive, restart PC
- Slow recognition
- Increase CPUs per OCR instance, reduce instance count for fastest speed
- High memory usage
- Reduce OCR instance count, or add RAM/CPU