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-2.1.0.tar.gz (18.2 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-2.1.0-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for anumiti_netra-2.1.0.tar.gz
Algorithm Hash digest
SHA256 103af52462d888052147d0aa722b8cf10cb0ebd96e34314e2c671e8cdbc309cc
MD5 302061d7fc4b92837e7a0b713d3d909d
BLAKE2b-256 7f6842861e53aaab487ceeb98b649217c5c253262fa52ac3701c576ea50afbb1

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for anumiti_netra-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a533250a8cfe3dea09921d94b766602b133da702f9580427e3fa5f96375d08fe
MD5 5faee717c8ef891cdfec052230ffa06f
BLAKE2b-256 72969c7c7dfbd3d89d75c4aae5a5e320494500e5febf58e4e76f7400aeaa6da0

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