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.5.tar.gz (15.8 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.5-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: anumiti_netra-1.0.5.tar.gz
  • Upload date:
  • Size: 15.8 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.5.tar.gz
Algorithm Hash digest
SHA256 7f2aad2222cf06f0a395d63a216b6cdad6c4b01965ceba51073dbeacce27c661
MD5 10726d89917ea5ef5aa49f57e34d46e3
BLAKE2b-256 7beee5781c16f8831eafac26e5ba5619d097bf6e2d80513f830507f895c21230

See more details on using hashes here.

File details

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

File metadata

  • Download URL: anumiti_netra-1.0.5-py3-none-any.whl
  • Upload date:
  • Size: 16.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-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 efd5adce6f6eb835a0973069456d28a3a8902f397854886ff76fad69fcbff0e7
MD5 0a56d70d5288df433b03c473b79db42b
BLAKE2b-256 a16fb6bd3ef7051dedcbcefee1b84497421981b876bc7ff649a1831d2e221478

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