Skip to main content

Haina Deep OCR API Client SDK

Project description

HN Deep OCR Client

Python SDK for Haina Deep OCR API - PDF parsing and document processing made easy.

Python Version License Code Style

Features

  • PDF file upload with automatic chunking (configurable chunk size)
  • Parsing status polling with optimized timeouts
  • Multi-format result generation (ZIP, JSON, Markdown, Image, Formula, Table)
  • Comprehensive error handling with custom exception classes
  • Built-in logging configuration
  • Type hints for better IDE support
  • Pydantic Settings for configuration management
  • Connection pooling and HTTP session reuse
  • Intelligent retry mechanism with exponential backoff
  • Granular timeout configuration per operation type
  • Full test coverage

Installation

pip install hn-deepocr-client

Or using uv:

uv add hn-deepocr-client

Quick Start

1. Get API Credentials

Apply for Access Key (AK) and Secret Key (SK) from Haina Platform.

2. Configure Environment Variables

Create a .env file in your project root:

AK=your_access_key_here
SK=your_secret_key_here
PRESIGNED_URL=https://open-sci-datahub.zero2x.org

Or use .env.example as a template:

cp .env.example .env
# Edit .env with your credentials

3. Basic Usage

from hn_deepocr_client import ParserPDF, load_config

config = load_config()

parser = ParserPDF(
    ak=config.AK,
    sk=config.SK,
    presigned_url=config.PRESIGNED_URL,
)

data_id = parser.start(
    file_name="document.pdf",
    file_path="./document.pdf",
)

print(f"Parse completed! DataID: {data_id}")

Advanced Usage

Custom Configuration

from hn_deepocr_client import ParserPDF, load_config, ConfigurationError

try:
    config = load_config()
    parser = ParserPDF(ak=config.AK, sk=config.SK, presigned_url=config.PRESIGNED_URL)
    data_id = parser.start("document.pdf", "./document.pdf")
except ConfigurationError as e:
    print(f"Configuration error: {e}")
except UploadError as e:
    print(f"Upload failed: {e}")
except ParseError as e:
    print(f"Parse failed: {e}")

Generate Specific Formats Only

data_id = parser.start("document.pdf", "./document.pdf", generate_all_formats=False)

# Generate only formats you need
zip_url = parser.generate_zips(data_id, "zip")
json_url = parser.generate_zips(data_id, "json")
markdown_url = parser.generate_zips(data_id, "markdown")

Direct API Usage

from hn_deepocr_client import create_token

token = create_token(
    ak="your_ak",
    sk="your_sk",
    url="https://api.example.com/upload",
    request_body='{"file":"test.pdf"}',
)

API Reference

ParserPDF

Main class for PDF parsing operations.

Methods

  • __init__(ak: str, sk: str, presigned_url: str) - Initialize parser
  • start(file_name: str, file_path: str, generate_all_formats: bool = True) -> str - Start full parsing workflow
  • get_parsing_status(data_id: str) -> int - Query parsing status (1=parsing, 2=success, 3=failed)
  • generate_zips(data_id: str, file_type: str) -> str - Generate download link for specific format

Exception Classes

  • HNDeepOCRError - Base exception class
  • ConfigurationError - Configuration related errors
  • AuthenticationError - Authentication failures
  • UploadError - File upload failures
  • ParseError - Parsing failures

Configuration

Configuration is managed via Pydantic Settings. Available options:

Core Configuration

Option Type Default Description
AK str (required) Access Key
SK str (required) Secret Key
PRESIGNED_URL str https://open-sci-datahub.zero2x.org API base URL
LOG_DIR str logs Log directory
LOG_FILE str pdf_parser.log Log filename

Network Configuration

Option Type Default Description
HN_DEEP_OCR_TIMEOUT_API int 30 API call timeout (seconds)
HN_DEEP_OCR_TIMEOUT_UPLOAD int 300 File upload timeout (seconds)
HN_DEEP_OCR_TIMEOUT_STATUS int 10 Status query timeout (seconds)
HN_DEEP_OCR_TIMEOUT_MERGE int 60 Merge operation timeout (seconds)
HN_DEEP_OCR_MAX_RETRIES_DEFAULT int 3 Default retry count
HN_DEEP_OCR_MAX_RETRIES_UPLOAD int 5 Upload retry count
HN_DEEP_OCR_BASE_DELAY float 1.0 Base delay for retry backoff
HN_DEEP_OCR_CONNECTION_POOL_SIZE int 10 Connection pool size
HN_DEEP_OCR_CONNECTION_MAXSIZE int 20 Maximum connections per pool
HN_DEEP_OCR_PART_SIZE int 10485760 File chunk size in bytes (10MB)

All network configuration options can be set via environment variables with the HN_DEEP_OCR_ prefix or in your .env file.

Development

Installation

git clone https://github.com/yourusername/hn-deepocr-client.git
cd hn-deepocr-client
uv sync

Running Tests

uv run pytest

With coverage:

uv run pytest --cov=hn_deepocr_client

Code Quality

# Format code
uv run ruff format .

# Lint code
uv run ruff check .

# Fix linting issues
uv run ruff check --fix .

# Type check
uv run mypy .

Examples

See the examples/ directory for usage examples:

  • basic_usage.py - Basic usage example
  • advanced_usage.py - Advanced features and error handling

Documentation

For more detailed documentation, see:

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

Acknowledgments

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

hn_deepocr_client-0.1.0.tar.gz (2.5 MB view details)

Uploaded Source

Built Distribution

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

hn_deepocr_client-0.1.0-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file hn_deepocr_client-0.1.0.tar.gz.

File metadata

  • Download URL: hn_deepocr_client-0.1.0.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for hn_deepocr_client-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1e5f6d5c54661daa65a3f6c27f169f928978386eba054b16dff6416413fd7735
MD5 84a10fd5b56470eb13dfec1926f97a76
BLAKE2b-256 ef0543fca91eac9b06945e8e1f532bb73a2312a325ddcaa99f34b421451539e7

See more details on using hashes here.

File details

Details for the file hn_deepocr_client-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: hn_deepocr_client-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 16.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for hn_deepocr_client-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2020628f98a244a5afebbd448e363bed9f8af9f9e15ed830b542140c1996ba0d
MD5 217627b6f50e4d331d6a3fa8ad487b43
BLAKE2b-256 769d845b88c0c6b7351fc4a3465fcd91bd445ce7ebf159cd9bf81adbdb94746c

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