Skip to main content

High-Performance OCR Toolkit

Project description

stars forks open issues issue resolution PyPI version PyPI - Python Version Downloads Downloads

PHOCR: High-Performance OCR Toolkit

English | 简体中文

PHOCR is an open high-performance Optical Character Recognition (OCR) toolkit designed for efficient text recognition across multiple languages including Chinese, Japanese, Korean, Russian, Vietnamese, and Thai. PHOCR features a completely custom-developed recognition model (PH-OCRv1) that significantly outperforms existing solutions.

Motivation

Current token-prediction-based model architectures are highly sensitive to the accuracy of contextual tokens. Repetitive patterns, even as few as a thousand instances, can lead to persistent memorization by the model. While most open-source text recognition models currently achieve character error rates (CER) in the percent range, our goal is to push this further into the per-mille range. At that level, for a system processing 100 million characters, the total number of recognition errors would be reduced to under 1 million — an order of magnitude improvement.

Features

  • Custom Recognition Model: PH-OCRv1 achieves sub-0.x% character error rate in document-style settings by leveraging open-source models. Even achieves 0.0x% character error rate in English.
  • Multi-language Support: Chinese, English, Japanese, Korean, Russian, and more
  • Rich Vocabulary: Comprehensive vocabulary for each language. Chinese: 15,316, Korean: 17,388, Japanese: 11,186, Russian: 292.
  • High Performance: Optimized inference engine with ONNX Runtime support
  • Easy Integration: Simple Python API for quick deployment
  • Cross-platform: Support for CPU and CUDA

Visualization

Visualization

Installation

pip install phocr

Quick Start

from phocr import PHOCR

# Initialize OCR engine
engine = PHOCR()

# Perform OCR on image
result = engine("path/to/image.jpg")
print(result)

# Visualize results
result.vis("output.jpg")
print(result.to_markdown())

Benchmarks

We conducted comprehensive benchmarks comparing PHOCR with leading OCR solutions across multiple languages and scenarios. Our custom-developed PH-OCRv1 model demonstrates significant improvements over existing solutions.

Overall Performance Comparison

Model ZH & EN
CER ↓
JP
CER ↓
KO
CER ↓
RU
CER ↓
English Simplified Chinese EN CH Mixed Traditional Chinese Document Scene Document Scene Document
PHOCR 0.0008 0.0057 0.0171 0.0145 0.0039 0.0197 0.0050 0.0255 0.0046
Baidu 0.0014 0.0069 0.0354 0.0431 0.0222 0.0607 0.0238 0.212 0.0786
Ali - - - - 0.0272 0.0564 0.0159 0.102 0.0616
PP-OCRv5 0.0149 0.0226 0.0722 0.0625 0.0490 0.1140 0.0113 0.0519 0.0348

Notice

Advanced Usage

With global KV cache enabled, we implement a simple version using PyTorch (CUDA). When running with torch (CUDA), you can enable caching by setting use_cache=True in ORTSeq2Seq(...), which also allows for larger batch sizes.

Language-specific Configuration

See demo.py for more examples.

Evaluation & Benchmarking

PHOCR provides comprehensive benchmarking tools to evaluate model performance across different languages and scenarios.

Quick Benchmark

Run the complete benchmark pipeline:

sh benchmark/run_recognition.sh

Calculate Character Error Rate (CER) for model predictions:

sh benchmark/run_score.sh

Benchmark Datasets

PHOCR uses standardized benchmark datasets for fair comparison:

Further Improvements

  • Character error rate (CER), including punctuation, can be further reduced through additional normalization of the training corpus.
  • Text detection accuracy can be further enhanced by employing a more advanced detection framework.

Contributing

We welcome contributions! Please feel free to submit issues, feature requests, or pull requests.

Support

For questions and support, please open an issue on GitHub or contact the maintainers.

Acknowledgements

Many thanks to RapidOCR for detection and main framework.

License

  • This project is released under the Apache 2.0 license
  • The copyright of the OCR detection and classification model is held by Baidu
  • The PHOCR recognition models are under the modified MIT License - see the LICENSE file for details

Citation

If you use PHOCR in your research, please cite:

@misc{phocr2025,
  title={PHOCR: High-Performance OCR Toolkit},
  author={PuHui Lab},
  year={2025},
  url={https://github.com/puhuilab/phocr}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

phocr-1.0.1.tar.gz (46.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

phocr-1.0.1-py3-none-any.whl (51.4 kB view details)

Uploaded Python 3

File details

Details for the file phocr-1.0.1.tar.gz.

File metadata

  • Download URL: phocr-1.0.1.tar.gz
  • Upload date:
  • Size: 46.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for phocr-1.0.1.tar.gz
Algorithm Hash digest
SHA256 a28f1c2fa480b1fb1dd0d149e7dd916a190c6c4a9a5d90d75a188cf45174f1f5
MD5 c2144f4feb918f77f2420cef650998ff
BLAKE2b-256 a77ad621d185a3aa1f0bf7f1ccd135f10ade632af7f36eb532aa4de7f30a4c4b

See more details on using hashes here.

File details

Details for the file phocr-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: phocr-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 51.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for phocr-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 66e36e4157669f0a5f5c68a1af039cc830337adc1a432a124c721cec74fbf915
MD5 592f4133b4c892ea82c91021ff98c5f8
BLAKE2b-256 08ab47e3b25fda23b35b13f3188ea28059be1edb36cdfa7462ba454c02f868d0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page