Upload PDFs, invoices, or scanned documents, and get perfectly structured JSON - exactly how you need it.
PDF, image, or Word file
Custom JSON structure
Layout-aware extraction
Structured JSON via API
{
"vendor_name": "Example Vendor",
"invoice_date": "2025-03-06",
"invoice_number: "ABC111"
"total_amount": 1234.56,
"customer": {
"company": "Example Company",
"name": "John Doe",
"address": "123 Main St",
"postal_code": "12345"
},
"sales_tax": {
"value": 123.45
},
"line_items": [
{
"service": "Product A",
"quantity": 2,
"price": 50.0,
"amount": 100.0
},
{
"service": "Product B",
"quantity": 1,
"price": 50.0,
"amount": 50.0
}
]
}
{
"vendor_name": "DEMO - Sliced Invoices",
"invoice_date": "2016-01-25",
"invoice_number": "INV-3337",
"total_amount": 93.5,
"customer": {
"company": "Test Business",
"name": "",
"address": "123 Somewhere St, Melbourne, VIC 3000",
"postal_code": "3000"
},
"sales_tax": {
"value": 8.5
},
"line_items": [
{
"service": "Web Design",
"quantity": 1,
"price": 85,
"amount": 85
}
]
}
Maintain tables, columns, and visual hierarchy exactly as designed
Define exact JSON output structures with validation rules
No user data is stored in our servers, and all processing is encrypted end-to-end
The beta period will last for 6 months. All features are available during beta, and you'll receive lifetime access for a one-time fee.
Your lifetime deal remains valid forever. You'll continue to receive support for all features available during beta. After the beta, you can choose to upgrade to a monthly plan for new features.
All documents are processed in-memory and never stored. We use AES-256 encryption for all data transfers and processing.
We currently support PDF, PNG, JPEG, and Microsoft Office formats. More formats coming soon!
The beta lifetime deal is non-refundable. If you have any issues, please contact support for assistance.
You can reach out to our support team via email.
import requests
import json
url = "https://docuschema.com/api/v1/process"
api_key = "your_secret_api_key" # Replace with your actual API key
# Example JSON schema
json_schema = {
"vendor_name": "Example Vendor",
"invoice_date": "2025-03-06",
"total_amount": 1234.56,
"customer": {
"company": "Example Company",
"name": "John Doe",
"address": "123 Main St",
"postal_code": "12345"
},
"sales_tax": {
"percentage": 10.0,
"value": 123.45
},
"line_items": [
{
"description": "Product A",
"quantity": 2,
"unit_price": 50.0,
"amount": 100.0
},
{
"description": "Product B",
"quantity": 3,
"unit_price": 75.0,
"amount": 225.0
}
]
}
# Convert schema to JSON string and pass as a query parameter
params = {"json_schema": json.dumps(json_schema)}
# File to upload
files = {
"file": ("invoice.pdf", open("invoice.pdf", "rb"), "application/pdf")
}
# Set the headers with the API key
headers = {
"x_api_key": api_key
}
# Making the POST request with headers included
response = requests.post(url, params=params, files=files, headers=headers)
# Print response details
print("Status Code:", response.status_code)
print("Response JSON:", response.json())