Skip to main content

Official Python SDK for Anumiti NETRA — India's AI document intelligence API

Project description

anumiti-netra

Official Python SDK for Anumiti NETRA — India's AI document intelligence API.

Extract structured data from GST invoices, contracts, identity documents, court orders, employment records, and MCA filings with a single function call.

Installation

pip install anumiti-netra
# or with uv
uv add anumiti-netra
# or with poetry
poetry add anumiti-netra

Quick Start

from anumiti_netra import NeTraClient

client = NeTraClient(api_key="anm_ntr_live_...")

# Extract a GST invoice
with open("invoice.pdf", "rb") as f:
    result = client.extract_gst_invoice(f, "invoice.pdf")

print(f"Trust Score: {result.trust_score}")
print(f"Seller GSTIN: {result.seller.gstin} (verified: {result.seller.gstin_verified})")
print(f"Grand Total: ₹{result.totals.grand_total:,.2f}")
print(f"ITC Eligible: {result.compliance_flags.itc_eligible}")

Async Usage

import asyncio
from anumiti_netra import AsyncNeTraClient

async def main():
    async with AsyncNeTraClient(api_key="anm_ntr_live_...") as client:
        with open("invoice.pdf", "rb") as f:
            result = await client.extract_gst_invoice(f, "invoice.pdf")
            print(f"Trust score: {result.trust_score}")

asyncio.run(main())

Supported Document Types

Method Document Type Indian Law Coverage
extract_gst_invoice() GST Tax Invoice CGST/SGST/IGST Act, Section 17(5), HSN validation
extract_gst_credit_note() GST Credit Note Rule 53, CDN reconciliation
extract_gst_eway_bill() GST E-Way Bill Rule 138, expiry detection
extract_contract() Legal Contract Indian Contract Act 1872, Stamp Act
extract_identity() Aadhaar/PAN/Passport/DL/VoterID DPDP Act 2023 (masked output)
extract_employment() Salary Slip/Offer Letter/Form 16 Labour Codes, PF Act, ESI Act
extract_court_order() Court Orders (HC/SC/District) CPC, CrPC, civil/criminal orders
extract_company_filing() MCA ROC Filings Companies Act 2013
verify_gstin() Standalone GSTIN check GSTN registry via Sandbox.co.in
verify_pan() Standalone PAN check Income Tax registry

All Methods

# GST Documents
invoice = client.extract_gst_invoice(file, "invoice.pdf")
credit_note = client.extract_gst_credit_note(file, "credit-note.pdf")
eway_bill = client.extract_gst_eway_bill(file, "eway-bill.pdf")

# Legal
contract = client.extract_contract(file, "agreement.pdf")
court_order = client.extract_court_order(file, "order.pdf")

# Identity (DPDP-compliant — Aadhaar last 4 only, PAN masked)
identity = client.extract_identity(file, "aadhaar.jpg")
print(identity.id_number_masked)  # XXXX XXXX 1234
print(identity.dpdp_redacted)     # True

# Employment
employment = client.extract_employment(file, "salary-slip.pdf")
print(employment.minimum_wage_compliant)

# Corporate
filing = client.extract_company_filing(file, "mgt7.pdf")

# Verification (no file needed)
gstin_result = client.verify_gstin("27AAACR5055K1Z5")
pan_result = client.verify_pan("ABCDE1234F")

Async Processing (Large Documents)

# Submit and return immediately
job = client.submit_document(file, "large.pdf", document_type="contract")
print(f"Job ID: {job.id}")

# Poll status
status = client.get_document_status(job.id)
print(f"Status: {status.status}")

# Or block until complete
completed = client.wait_for_document(job.id, poll_interval=2.0, max_wait=300.0)
if completed.status == "completed":
    result = client.get_document_result(job.id)

Error Handling

from anumiti_netra import (
    NeTraClient,
    AuthenticationError,
    RateLimitError,
    DocumentTooLargeError,
    OCRFailedError,
    PollingTimeoutError,
)

try:
    result = client.extract_gst_invoice(file, "invoice.pdf")
except AuthenticationError:
    print("Invalid API key")
except RateLimitError as e:
    print(f"Rate limited. Retry after: {e.retry_after_ms}ms")
except DocumentTooLargeError:
    print("File too large (max 50MB)")
except OCRFailedError:
    print("OCR failed — try a higher resolution scan")
except PollingTimeoutError as e:
    print(f"Timed out waiting for document {e.document_id}")

Configuration

client = NeTraClient(
    api_key="anm_ntr_live_...",
    base_url="https://netra.anumiti.in",  # default
    timeout=60.0,                          # 60s default
    max_retries=3,                         # default
    retry_delay=1.0,                       # 1s base, exponential backoff
)

Context Manager

# Sync
with NeTraClient(api_key="anm_ntr_live_...") as client:
    result = client.extract_gst_invoice(file, "invoice.pdf")

# Async
async with AsyncNeTraClient(api_key="anm_ntr_live_...") as client:
    result = await client.extract_gst_invoice(file, "invoice.pdf")

Type Safety

All responses are Pydantic v2 models — full IDE autocompletion:

from anumiti_netra.models import GSTInvoiceResult, ContractResult

def process_invoice(result: GSTInvoiceResult) -> float:
    if result.compliance_flags.itc_eligible:
        return result.totals.total_igst or 0.0
    return 0.0

Requirements

  • Python 3.9+
  • httpx >= 0.27.0
  • pydantic >= 2.5.0

License

MIT — © Anumiti Technologies Pvt Ltd

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

anumiti_netra-0.1.6.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

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

anumiti_netra-0.1.6-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

Details for the file anumiti_netra-0.1.6.tar.gz.

File metadata

  • Download URL: anumiti_netra-0.1.6.tar.gz
  • Upload date:
  • Size: 13.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for anumiti_netra-0.1.6.tar.gz
Algorithm Hash digest
SHA256 8989fa2da9407a54a7edcf1090d0cc9147af8ba102957be8712b1bf74509d9eb
MD5 92f336f40e46052857f44e57e03617dd
BLAKE2b-256 e7854583628a40d5664166e339bf6fe31040254fcac7f4fe7f076093f79f5977

See more details on using hashes here.

File details

Details for the file anumiti_netra-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: anumiti_netra-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 14.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for anumiti_netra-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 5bcbea5c66e5f7dd280f3854c1520f0795ad530ed686555c8f652b4017d89144
MD5 7cf6ad09279b2933c95ae09aea18827f
BLAKE2b-256 80bd377e49ee3bb6043d58b6c142c586a68955d5658ea1aa288e42044fdef736

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