Skip to main content

A robust Python library for extracting information from passports using OCR (Tesseract) and MRZ parsing.

Project description

This is a mockup library used for OCR of identity documents.

Passport

A Python library for extracting information from passports using OCR (Tesseract). It supports parsing MRZ (Machine Readable Zone) and extracting additional fields like "Place of Issue" and "Date of Issue" from the visual zone.

Features

  • Robust MRZ Parsing: Handles common OCR errors, corrects line lengths, and supports various MRZ formats (TD1, TD2, TD3).
  • Full Text Extraction: Extracts non-MRZ fields like Place of Issue and Date of Issue.
  • Data Formatting:
    • Dates are standardized to dd-MM-YYYY.
    • Country codes are converted to full country names (e.g., VNM -> Vietnam).
    • Names are converted to Title Case (e.g., NGUYEN VAN A -> Nguyen Van A).
  • Input Flexibility: Accepts image file paths or Base64 encoded strings.
  • Fallback Logic: If Date of Issue is missing, it can infer it from Expiry Date (Expiry - 10 years).

Prerequisites

You need to have Tesseract OCR installed on your system.

Linux (Ubuntu/Debian)

sudo apt-get update
sudo apt-get install tesseract-ocr libtesseract-dev

Linux (Rocky/RHEL/CentOS)

sudo dnf install epel-release
sudo dnf install tesseract

[!NOTE] If you encounter version conflicts with language packs, installing just tesseract is often sufficient as it usually includes English data. If you need other languages, ensure the version matches the installed tesseract version.

macOS

brew install tesseract

Windows

Download and install the installer from UB-Mannheim/tesseract.

Installation

  1. Clone this repository.
  2. Install Python dependencies:
pip install m-ocr-mockup

Usage

Basic Usage (File Path)

from identity_ocr import read_passport

# Path to your passport image
image_path = "path/to/passport.jpg"

result = read_passport(image_path)

print(result)

Advanced Usage (Base64)

You can pass a Base64 string directly (with or without the data:image/...;base64, header).

from identity_ocr import read_passport

# Your base64 string
base64_string = "data:image/jpeg;base64,/9j/4AAQSkZJRg..."

result = read_passport(base64_string)

print(result)

Output Format

The library returns a dictionary with the extracted fields:

{
    'fullname': '',       # Combined Surname + Name (Title Case)
    'surname': '',
    'name': '',
    'sex': 'M',                      # M or F
    'birth_date': '',      # dd-MM-YYYY
    'expiry_date': '',     # dd-MM-YYYY
    'date_of_issue': '',   # dd-MM-YYYY (Extracted or Calculated)
    'place_of_issue': '', # Extracted from visual zone
    'document_number': '',
    'nationality': '',        # Full country name
    'country': '',            # Issuing country
    'type': '',                   # Passport type (TD3 is standard)
    'valid': True,                   # True if MRZ checksums are valid
    'raw_mrz': [...]                 # List of MRZ lines (for debugging)
}

Notes

  • Image Quality: High-resolution, glare-free images work best.
  • Language Support: The library uses Tesseract's English model (eng) by default. It works well for most passports (including Vietnamese) as they are bilingual.

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

identity_ocr-0.1.5.tar.gz (15.7 kB view details)

Uploaded Source

Built Distribution

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

identity_ocr-0.1.5-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file identity_ocr-0.1.5.tar.gz.

File metadata

  • Download URL: identity_ocr-0.1.5.tar.gz
  • Upload date:
  • Size: 15.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for identity_ocr-0.1.5.tar.gz
Algorithm Hash digest
SHA256 81ed18e60f504db1938e42b6a5e3aa202da64d4f1cc66b4f8de619515c82f26f
MD5 d07b1d9aaa6ed10dfb3f64b50ea8a99d
BLAKE2b-256 0bf037df45ce5e1e26c1c1a76a75992cf34c33eb4763804346341c3e1d4b444e

See more details on using hashes here.

File details

Details for the file identity_ocr-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: identity_ocr-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for identity_ocr-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 2d446782d5d61d270fc8d1e8b535cb2057088ab682b369e8ec2b7eb7a323992f
MD5 be2c43d9022a66a6907b15c67081fba4
BLAKE2b-256 4d3b740e178640c69631d8f1180402663b71609ffcfa9b243e13fea8aa31dac8

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