Skip to main content

Vectorize Iris SDKs

Use the Vectorize Iris Python or Node.js SDK to programmatically extract text from documents in your applications. Ideal for production systems that need to process documents at scale.

Setup​

Set your API credentials as environment variables:

export VECTORIZE_TOKEN="your-token"
export VECTORIZE_ORG_ID="your-org-id"

Python SDK​

Installation​

pip install vectorize-iris

Basic Text Extraction​

from vectorize_iris import extract_text_from_file

result = extract_text_from_file('document.pdf')
print(result.text)

Custom Parsing Instructions​

Guide the extraction with specific instructions:

from vectorize_iris import extract_text_from_file, ExtractionOptions

result = extract_text_from_file('document.pdf', options=ExtractionOptions(
parsing_instructions='Focus on extracting tables and ignore headers/footers'
))
print(result.text)

Semantic Chunking​

Split documents into semantic chunks:

from vectorize_iris import extract_text_from_file, ExtractionOptions

result = extract_text_from_file('document.pdf', options=ExtractionOptions(
chunk_size=512
))

for chunk in result.chunks:
print(chunk)

Metadata Extraction​

Extract structured metadata using a schema:

from vectorize_iris import extract_text_from_file, ExtractionOptions

result = extract_text_from_file('invoice.pdf', options=ExtractionOptions(
metadata_schemas=[{
'id': 'invoice-data',
'schema': {
'invoice_number': 'string',
'date': 'string',
'total_amount': 'number',
'vendor_name': 'string',
'items': [{
'description': 'string',
'quantity': 'number',
'price': 'number'
}]
}
}]
))

print(result.metadata)

Document Classification​

Classify documents using multiple schemas:

from vectorize_iris import extract_text_from_file, ExtractionOptions

result = extract_text_from_file('document.pdf', options=ExtractionOptions(
metadata_schemas=[
{'id': 'invoice', 'schema': {'invoice_number': 'string', 'total': 'number'}},
{'id': 'receipt', 'schema': {'merchant': 'string', 'amount': 'number'}},
{'id': 'contract', 'schema': {'parties': ['string'], 'effective_date': 'string'}},
]
))

# Iris will match the document to the most appropriate schema
print(result.metadata)

Complete Example​

from vectorize_iris import extract_text_from_file, ExtractionOptions

# Extract with all options
result = extract_text_from_file(
'financial-report.pdf',
options=ExtractionOptions(
chunk_size=256,
parsing_instructions='Extract financial data, tables, and key metrics',
metadata_schemas=[{
'id': 'financial-report',
'schema': {
'company_name': 'string',
'report_date': 'string',
'revenue': 'number',
'expenses': 'number',
'net_income': 'number'
}
}]
)
)

print(f"Extracted text: {result.text}")
print(f"Chunks: {len(result.chunks)}")
print(f"Metadata: {result.metadata}")

Node.js/TypeScript SDK​

Installation​

npm install @vectorize-io/iris

Basic Text Extraction​

import { extractTextFromFile } from '@vectorize-io/iris';

const result = await extractTextFromFile('document.pdf');
console.log(result.text);

Custom Parsing Instructions​

import { extractTextFromFile } from '@vectorize-io/iris';

const result = await extractTextFromFile('document.pdf', {
parsingInstructions: 'Focus on extracting tables and ignore headers/footers'
});
console.log(result.text);

Semantic Chunking​

import { extractTextFromFile } from '@vectorize-io/iris';

const result = await extractTextFromFile('document.pdf', {
chunkSize: 512
});

result.chunks.forEach(chunk => {
console.log(chunk);
});

Metadata Extraction​

import { extractTextFromFile } from '@vectorize-io/iris';

const result = await extractTextFromFile('invoice.pdf', {
metadataSchemas: [{
id: 'invoice-data',
schema: {
invoice_number: 'string',
date: 'string',
total_amount: 'number',
vendor_name: 'string',
items: [{
description: 'string',
quantity: 'number',
price: 'number'
}]
}
}]
});

console.log(result.metadata);

Document Classification​

import { extractTextFromFile } from '@vectorize-io/iris';

const result = await extractTextFromFile('document.pdf', {
metadataSchemas: [
{ id: 'invoice', schema: { invoice_number: 'string', total: 'number' } },
{ id: 'receipt', schema: { merchant: 'string', amount: 'number' } },
{ id: 'contract', schema: { parties: ['string'], effective_date: 'string' } },
]
});

// Iris will match the document to the most appropriate schema
console.log(result.metadata);

Complete Example​

import { extractTextFromFile } from '@vectorize-io/iris';

// Extract with all options
const result = await extractTextFromFile('financial-report.pdf', {
chunkSize: 256,
parsingInstructions: 'Extract financial data, tables, and key metrics',
metadataSchemas: [{
id: 'financial-report',
schema: {
company_name: 'string',
report_date: 'string',
revenue: 'number',
expenses: 'number',
net_income: 'number'
}
}]
});

console.log(`Extracted text: ${result.text}`);
console.log(`Chunks: ${result.chunks.length}`);
console.log(`Metadata:`, result.metadata);

Common Integration Patterns​

Processing Uploaded Files​

Python (Flask):

from flask import Flask, request
from vectorize_iris import extract_text_from_file

@app.route('/upload', methods=['POST'])
def upload_file():
file = request.files['file']
file.save('temp.pdf')

result = extract_text_from_file('temp.pdf')
return {'text': result.text, 'metadata': result.metadata}

Node.js (Express):

import express from 'express';
import { extractTextFromFile } from '@vectorize-io/iris';

app.post('/upload', async (req, res) => {
const file = req.files.file;
await file.mv('temp.pdf');

const result = await extractTextFromFile('temp.pdf');
res.json({ text: result.text, metadata: result.metadata });
});

Batch Processing with Error Handling​

Python:

import os
from vectorize_iris import extract_text_from_file, ExtractionOptions

def process_directory(input_dir, output_dir):
for filename in os.listdir(input_dir):
if filename.endswith('.pdf'):
try:
result = extract_text_from_file(
os.path.join(input_dir, filename),
options=ExtractionOptions(chunk_size=512)
)

output_file = os.path.join(output_dir, f"{filename}.json")
with open(output_file, 'w') as f:
f.write(result.to_json())

print(f"✓ Processed {filename}")
except Exception as e:
print(f"✗ Failed {filename}: {e}")

Node.js:

import { readdir } from 'fs/promises';
import { extractTextFromFile } from '@vectorize-io/iris';
import { writeFile } from 'fs/promises';

async function processDirectory(inputDir: string, outputDir: string) {
const files = await readdir(inputDir);

for (const filename of files) {
if (filename.endsWith('.pdf')) {
try {
const result = await extractTextFromFile(
`${inputDir}/${filename}`,
{ chunkSize: 512 }
);

await writeFile(
`${outputDir}/${filename}.json`,
JSON.stringify(result)
);

console.log(`✓ Processed ${filename}`);
} catch (e) {
console.error(`✗ Failed ${filename}:`, e);
}
}
}
}

Next Steps​

Was this page helpful?