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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file anumiti_netra-1.0.1.tar.gz.
File metadata
- Download URL: anumiti_netra-1.0.1.tar.gz
- Upload date:
- Size: 15.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
379cb61d677012546faa52a61a98323340aa96b06c6745cd504fcb6b9059c0ef
|
|
| MD5 |
5f365325c774975636b52aa239648100
|
|
| BLAKE2b-256 |
2409a2612389859ffbb86582eb8793ecde5a9779dff0b65eca3b39c075ee6621
|
File details
Details for the file anumiti_netra-1.0.1-py3-none-any.whl.
File metadata
- Download URL: anumiti_netra-1.0.1-py3-none-any.whl
- Upload date:
- Size: 16.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
091d8270bf98ed2ea63244aa0b405452a3396d07c75cb55acda953c5a5f33cc0
|
|
| MD5 |
6887f4b7cf9dc2bf05028be6aa1fc990
|
|
| BLAKE2b-256 |
72aa8d688a67dac8a52add21874700a95777025dbb1d4cd7134badcd7b404d81
|