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-1.0.0.tar.gz (14.6 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-1.0.0-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for anumiti_netra-1.0.0.tar.gz
Algorithm Hash digest
SHA256 78f5e8ea8f7d13f18986718e8cdec50667c864f35903732a53d5e9ab5c46e367
MD5 b79814596664b9bf874d8a33e900f2a1
BLAKE2b-256 35084cd501d0d58c6e125ce52f1468dba30b79d40f50fc163e58550e97f3ead3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: anumiti_netra-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 15.1 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-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6b895f1d0c3e01ff9302e050ab81fcba16dde9a07975181a80526d05a6e1f4db
MD5 b4b9eb8e0f200d766a66901cb3fd660f
BLAKE2b-256 819eae5acbf557da67d8b4dbb0692dd700975ce262f5d7a61a5b0a176ff06ebd

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