Python SDK for IntelliDoc document extraction service
Project description
IntelliDoc SDK
SDK Python para o serviço de extração de texto IntelliDoc.
Índice
Instalação
pip install intellidoc-sdk
Requisitos: Python 3.13+
Início Rápido
from intellidoc_sdk import IntelliDocClient
client = IntelliDocClient(url="http://intellidoc:8000", api_key="sua-chave")
# 1. Enviar documentos
docs = await client.submit(["contrato.pdf", "certidao.html", "foto.jpg"])
# 2. Obter resultados (chegam conforme ficam prontos)
async for result in client.get_results(docs):
if result.error:
# O documento falhou no processamento
print(f"{result.filename} falhou: {result.error}")
else:
# O documento foi processado com sucesso
print(f"{result.filename}: {result.text[:100]}...")
Importante: sempre verifique
result.errorantes de usarresult.text. Quando um documento falha,result.textéNone. Acessar sem verificar causaTypeError.
Como Funciona
O SDK abstrai a comunicação com a API REST do IntelliDoc em dois passos:
submit() get_results()
| |
v v
Envia arquivos via HTTP ---> Faz polling automático
Retorna IDs na hora Entrega resultados via async for
submit(files)envia os arquivos para o IntelliDoc e retorna imediatamente com os IDs atribuídos a cada documentoget_results(docs)faz polling interno no IntelliDoc e entrega cada resultado conforme o processamento termina
O consumidor não precisa implementar polling, retry ou controle de lote. O SDK cuida disso internamente. Se o número de arquivos exceder o limite por requisição, o SDK divide automaticamente em lotes.
Referência da API
IntelliDocClient(url, api_key)
client = IntelliDocClient(url="http://intellidoc:8000", api_key="sua-chave")
| Parâmetro | Tipo | Descrição |
|---|---|---|
url |
str |
URL do IntelliDoc |
api_key |
str |
API key de autenticação |
O client também pode ser usado como context manager:
async with IntelliDocClient(url="...", api_key="...") as client:
docs = await client.submit(["doc.pdf"])
async for result in client.get_results(docs):
...
# Conexão fechada automaticamente
submit(files)
Envia arquivos para processamento. Retorna lista de DocumentInfo com ID e filename de cada documento.
docs = await client.submit(["relatório.pdf", "imagem.png"])
for doc in docs:
print(f"{doc.filename} → {doc.id}")
# relatório.pdf → 550e8400-e29b-41d4-a716-446655440000
# imagem.png → 661f9511-f3ac-42e5-b827-557766551111
Parâmetros:
files: list[str]— Lista de caminhos de arquivos
Retorna: list[DocumentInfo]
get_results(docs)
Faz polling e entrega resultados conforme cada documento termina de processar.
async for result in client.get_results(docs):
if result.error:
# Documento falhou — text é None
print(f"{result.filename} falhou: {result.error}")
else:
# Documento processado — error é None
print(f"{result.filename}: {len(result.text)} caracteres")
Parâmetros:
docs: list[DocumentInfo]— Retorno dosubmit()
Yield: DocumentResult
Resultados chegam na ordem de conclusão, não na ordem de envio. O primeiro a terminar é o primeiro a ser entregue.
Entidades
DocumentInfo — retornado por submit()
| Campo | Tipo | Descrição |
|---|---|---|
id |
str |
ID do documento no IntelliDoc |
filename |
str |
Nome do arquivo original |
DocumentResult — entregue por get_results()
| Campo | Tipo | Descrição |
|---|---|---|
id |
str |
ID do documento |
filename |
str |
Nome do arquivo original |
text |
str | None |
Texto extraído (None se falhou) |
error |
str | None |
Mensagem de erro (None se sucesso) |
Regra: se
errornão éNone, o documento falhou etextseráNone. SeerroréNone, o documento foi processado com sucesso etextcontém o texto extraído.
Tratamento de Erros
Existem dois tipos de erro:
Erros de infraestrutura
Afetam toda a operação. O SDK levanta exceção. Isso acontece quando o IntelliDoc está fora do ar ou a API key é inválida:
from intellidoc_sdk.exceptions import AuthenticationError, ServiceUnavailableError
try:
docs = await client.submit(["arquivo.pdf"])
except AuthenticationError:
# API key inválida ou ausente
print("Verifique sua API key")
except ServiceUnavailableError:
# IntelliDoc fora do ar ou inacessível
print("Tente novamente mais tarde")
Erros por documento
Afetam um documento específico. Os demais documentos continuam sendo processados normalmente. O erro vem no campo result.error:
async for result in client.get_results(docs):
if result.error:
# Este documento falhou, mas os outros continuam
print(f"{result.filename}: {result.error}")
else:
print(f"{result.filename}: {len(result.text)} caracteres extraídos")
Lista de exceções
| Exceção | Quando |
|---|---|
AuthenticationError |
API key inválida (401/403) |
ValidationError |
Requisição rejeitada (400) |
ServiceUnavailableError |
IntelliDoc fora do ar |
IntelliDocError |
Base de todas as exceções do SDK |
Formatos Suportados
| Formato | Extensões |
|---|---|
.pdf |
|
| DOCX | .docx |
| JPEG | .jpg, .jpeg |
| PNG | .png |
| TIFF | .tif, .tiff |
| BMP | .bmp |
| HTML | .html, .htm |
| XML | .xml |
| TXT | .txt |
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
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 intellidoc_sdk-0.1.1.tar.gz.
File metadata
- Download URL: intellidoc_sdk-0.1.1.tar.gz
- Upload date:
- Size: 13.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0616c03b6e5d83a1144a9b19c83c32ebbdfcbfcff89c7b46873266c690c07dc
|
|
| MD5 |
2d5cd0b3731521235e4379cfa1fca9e7
|
|
| BLAKE2b-256 |
003532b63e452d223024350d1cb4deb4a8c09451d1195dda3d7eefab31d28df7
|
File details
Details for the file intellidoc_sdk-0.1.1-py3-none-any.whl.
File metadata
- Download URL: intellidoc_sdk-0.1.1-py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3884460468bdd11a5c7088ebe95d8b48882dfe05a7420175617e53e64ffe4e6d
|
|
| MD5 |
86eb115544824f793bc07b928e7cdc86
|
|
| BLAKE2b-256 |
4ee3fee16b81d30d0f79830b1bd4a20232f29605fe7e887eb57fa85569142518
|