Skip to main content

Document Extraction Inference API using DeepLabV3 with Pretrain Model

Project description

Autocrop_kh

Automatic Document Segmentation and Cropping for Khmer IDs, Passport and Documents

Autocrop_kh is a Python package for automatic document segmentation and cropping, with a focus on Khmer IDs, Passport and other documents. It uses a DeepLabV3 model training on Khmer ID, Passport document datasets to accurately segment and extract documents from images.

License: Apache-2.0 License

Installation

Install from source

# clone repo 
git clone https://github.com/MetythornPenn/autocrop_kh.git

# install lib from source
pip install -e .

Install from PyPI

pip install autocrop-kh

Usage

Python Script

import torch
import cv2
import requests
import os
from autocrop_kh import autocrop

# Function to download files from URLs
def download_file(url, local_filename):
    with requests.get(url, stream=True) as r:
        r.raise_for_status()
        with open(local_filename, 'wb') as f:
            for chunk in r.iter_content(chunk_size=8192):
                f.write(chunk)
    print(f"Downloaded: {local_filename}")

# URLs for the image and model
img_url = "https://github.com/MetythornPenn/autocrop_kh/raw/main/sample/img-1.jpg"
model_url = "https://github.com/MetythornPenn/autocrop_kh/raw/main/models/autocrop_model_v2.onnx"

# Local paths to save the files
img_path = "img-1.jpg"
model_path = "autocrop_model_v2.onnx"

# Download the image and model files
download_file(img_url, img_path)
download_file(model_url, model_path)

# Verify the files are correctly downloaded
if not os.path.exists(img_path):
    raise FileNotFoundError(f"Image file {img_path} was not found.")
if not os.path.exists(model_path):
    raise FileNotFoundError(f"Model file {model_path} was not found.")

# Specify device (CPU or CUDA or Apple Silicon GPU)
if torch.cuda.is_available():
    device = "cuda"  # Use NVIDIA GPU (if available)
elif torch.backends.mps.is_available():
    device = "mps"  # Use Apple Silicon GPU (if available)
else:
    device = "cpu"  # Default to CPU if no GPU is available

# Perform document extraction
extracted_document = autocrop(img_path=img_path, model_path=model_path, device=device)

# Save the extracted document
output_path = "extracted_document.jpg"
cv2.imwrite(output_path, extracted_document[:, :, ::-1])  # Convert back to BGR for saving

print(f"Extracted document saved to {output_path}")
  • img_path: Path of the input image file.
  • model_path: Path to the pre-trained model (local path and support both .onnx and .pth).
  • device: Specify cpu or cuda or mps (default is gpu).
  • output_path: Path where the extracted document image will be saved.

Result:

Left Image Right Image

Left Image Right Image

Running as API & Web

# clone repo
git clone https://github.com/MetythornPenn/autocrop_kh.git

# go to directory
cd autocrop

# install libraries
pip3 install -r requirements.txt

# start server (http://localhost:5555/docs)
make server

# start client ((http://localhost:7860))
make client 

Noted : This model was trained with 25000 datasets include opensource data and my custom synthetic data.

Reference

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

autocrop_kh-0.0.3.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

autocrop_kh-0.0.3-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file autocrop_kh-0.0.3.tar.gz.

File metadata

  • Download URL: autocrop_kh-0.0.3.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for autocrop_kh-0.0.3.tar.gz
Algorithm Hash digest
SHA256 4af7de8c7edd9c2a8420dcc1e9bae1d899c6e8158d06b2bc3edfd13e7dc20607
MD5 b24eab759f1a5d7e1c484d15ce4ea777
BLAKE2b-256 902638631b9f863a44818d0c6d03502967d51991d89ad673febf505b3c6e6f09

See more details on using hashes here.

File details

Details for the file autocrop_kh-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: autocrop_kh-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for autocrop_kh-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 eb4f35b9a6c5272db8d4bb5ee2f80ac342228d0cb9f29a1b4a2aa2bc2a8e865a
MD5 1bdbb32e996e19c4495e5c51f897e70e
BLAKE2b-256 e353fe1f5a524f3f5fb788b010ef442a7b7cd3b516320b7df0eedc8bdded6a52

See more details on using hashes here.

Supported by

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