Tabinda Khan
Senior Product Marketing Manager
Published October 20, 2026
Updated October 20, 2026
5 min
Apryse OCR v12.2 vs. PaddleOCR: Up to 4.27x Faster With Up to 78% Less Memory
Tabinda Khan
Senior Product Marketing Manager

Against stock PaddleOCR V6 Server, Apryse OCR v12.2 ran up to 4.27× faster and used up to 78% less peak memory in internal benchmarks. Here's what that means for your Node.js OCR workers.
Apryse OCR v12.2 is the OCR module for the Apryse Server SDK. In internal Apryse benchmarks, it completed OCR 2.59× faster than Apryse OCR v12.0 and up to 4.27× faster than stock PaddleOCR V6 Server, with up to 78% lower peak memory. Recognition accuracy is unchanged from v12.0. Results vary with document type, image size, language, hardware, and configuration.

Faster OCR Means More Processing Capacity
Two factors have the biggest impact on server-side OCR costs: how long each batch takes and how much memory each worker uses. Faster processing clears document queues sooner, while lower memory use lets you run more workers on the same server.
This matters most for high-volume intake. Bank statements, invoices, receipts, cheques, and passports often arrive as scans or image-based PDFs. Until OCR adds searchable text, tasks such as search, data extraction, and review have to wait.
With Apryse Server SDK, OCR runs on your own servers, so document content stays within your environment. The standard OCR module works without a GPU and is designed to handle challenging scans, including low-resolution pages, skewed text, and complex, multidirectional layouts. It recognizes printed and machine-generated text; handwriting is handled by the separate ICR module.
What Changed in v12.2: Benchmark Results
Apryse OCR v12.2 completed the internal benchmark 2.59× faster than v12.0, reducing runtime by 61.4%. Against stock PaddleOCR V6 Server, v12.2 ran up to 4.27× faster and used up to 78% less peak memory. Apryse validated v12.2 performance and behavior across 18 complete regression runs.
Processing time (runtime in m:ss.sss)
Comparison | Baseline runtime | Apryse OCR v12.2 runtime | Speedup | Runtime reduction |
|---|---|---|---|---|
Apryse OCR v12.0 vs. v12.2 | 3:53.823 | 1:30.155 | 2.59× | 61.4% |
Stock PaddleOCR V6 Server vs. Apryse OCR v12.2 | 26:00.060 | 6:05.676 | 4.27× | 76.6% |
Peak memory (tested on images of about 2 MB, 8 MB, and 33 MB)
Comparison | Reduction across tested image sizes | Average footprint |
|---|---|---|
Apryse OCR v12.2 vs. v12.0 | 20.1–44.5% lower | 1.61× lower |
Apryse OCR v12.2 vs. stock PaddleOCR V6 Server | 56.9–78.0% lower | 3.58× lower |
The largest memory reduction, 78.0% against PaddleOCR V6 Server, came on the medium (8 MB) images.
These figures come from internal Apryse benchmarks. Tested configuration: [Hardware, OS, CPU cores, SDK binding, OCR mode, image and page counts, languages, batch size, concurrency]. Results vary with document type, image size, language, hardware, runtime configuration, batch size, and workload. Treat them as a starting point and measure on your own documents.
Accuracy Carried Forward From v12.0
Version 12.2 is a speed and memory release. Recognition accuracy is unchanged from v12.0, which replaced the v11 OCR engine with a deep-learning model.
Area | What v12 changed compared with v11 |
|---|---|
Recognition engine | Deep-learning neural network engine |
Word recognition accuracy | About 16% better |
Low-quality scans | Better results on scans under 300 DPI |
Skewed pages and complex, multidirectional layouts | Better handling |
Language coverage | Adds Chinese, Japanese, Korean, Portuguese, and more Latin-alphabet languages, for 80+ in total |
Apryse validated v12.2 performance and behavior across 18 complete regression runs.
Upgrading a Node.js OCR Worker to Apryse OCR v12.2
The upgrade takes two steps. Install the 12.2 Server SDK and OCR module packages in your worker image, then run your OCR calls inside a worker that initializes PDFNet once.
This feature requires the OCR add-on module, which is a separate download from the base Server SDK. See the modules documentation (docs.apryse.com/core/guides/info/modules) for download and installation instructions.
# Install the Server SDK and the OCR add-on module into your Linux worker image
npm i @pdftron/pdfnet-node
npm install @pdftron/ocr @pdftron/pdfnet-node installs the platform-specific native binary for the Server SDK. @pdftron/ocr adds the OCR module and installs through npm on Windows and Linux only. If your image is based on Alpine Linux, pass a target platform specifier during npm install, as described in the Node.js get-started guide.
Wrap your worker's entry point in PDFNet.runWithCleanup(main, licenseKey) and call PDFNet.shutdown() in .then(). That pattern initializes PDFNet once for the life of the worker and releases JavaScript-side references between documents. For the OCR call itself, start from the OCRTest sample in the main SDK download and the OCR workflow guide (docs.apryse.com/core/guides/ocr/workflow). Both cover converting scans to searchable PDFs and exporting OCR results as JSON or XML with text and position data.
The method runWithCleanup initializes PDFNet once and releases native references when the job ends. The availability check fails fast if the OCR module is missing from the worker image.
License keys are confidential. Do not commit them to public repositories. Use environment variables or a secrets manager to inject your key at runtime.
Running Apryse OCR v12.2 at Production Volume
Size memory for your largest scans. Measure peak use on production images before increasing concurrency, then set container limits from those results.
Keep workers long-lived. Initialize PDFNet at startup and process documents in a loop to avoid repeated setup costs.
Give each worker its own document. Avoid sharing a PDFDoc across threads. If sharing is required, use the Lock and LockRead APIs to prevent crashes.
Set language per document. Route mixed scripts separately, since languages from different script groups generally cannot be combined except with English.
Use x64 nodes. The OCR module does not support ARM or 32-bit platforms, so pin OCR workers to x64 nodes.
What to Test After Upgrading
- Batch throughput. Compare the same production-based batch on your current version and v12.2 to see the real speed gain.
- Peak memory per worker. Measure maximum memory across your image sizes before adding workers, so container limits remain safe.
- Text accuracy. Check known values against verified pages, because faster OCR is not useful if it misses or misreads text.
- Rotated non-Latin pages. Verify rotated Cyrillic, Devanagari, Arabic, and Korean pages, since automatic orientation detection is not supported for these scripts.
Get Started with Apryse OCR in Node.js
- Install the Server SDK with npm i @pdftron/pdfnet-node and the OCR module with npm install @pdftron/ocr. Get your free trial key at dev.apryse.com before running the code.
- Follow the Node.js get-started guide for setup, then the OCR workflow guide.
- Node.js samples are available through @pdftron/pdfnet-node-samples, and the OCRTest sample ships in the main SDK download.


