Invoice with line items
Extracting metadata and line items from invoices with examples in Python and Node.
Last updated
import requests
import base64
file_name = 'amazing_company_2.pdf'
with open(file_name, 'rb') as file:
base64_data = base64.b64encode(file.read()).decode('utf-8')
payload = {
"file": base64_data,
"file_name": file_name,
"document_type_name": "line-item-invoice"
}
url = "https://developers.typless.com/api/extract-data"
headers = {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": "<<apikey>>"
}
response = requests.request("POST", url, json=payload, headers=headers)
for field in response.json()['extracted_fields']:
print(f'{field["name"]}: {field["values"][0]["value"]}')const fetch = require('node-fetch');
const fs = require('fs');
const fileName = 'amazing_company_2.pdf';
const base64File = fs.readFileSync(fileName, {encoding: 'base64'});
const url = 'https://developers.typless.com/api/extract-data';
const payload = {
file: base64File,
file_name: fileName,
document_type_name: "line-item-invoice"
}
const headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': '<<apikey>>'
}
let options = {
method: 'POST',
headers: headers,
body: JSON.stringify(payload)
};
fetch(url, options)
.then(res => res.json())
.then(json => {
json.extracted_fields.forEach(field => console.log(`${field.name}: ${field.values[0].value}`))
json.line_items.forEach(
line_item => {
console.log('Line item')
line_item.forEach(field => console.log(`${field.name}: ${field.values[0].value}`))
}
)
}
)
.catch(err => console.error('error:' + err));// Example extraction response - the provided recipe will not produce equal results
{
"file_name": "invoice_2.pdf",
"object_id": "1cb25cc8-c9fa-4149-9a83-b4ed6a2173b9",
"extracted_fields": [
{
"name": "supplier",
"values": [
{
"x": -1,
"y": -1,
"width": -1,
"height": -1,
"value": "ScaleGrid",
"confidence_score": "0.968",
"page_number": -1
}
],
"data_type": "AUTHOR"
},
{
"name": "invoice_number",
"values": [
{
"x": 1989,
"y": 545,
"width": 323,
"height": 54,
"value": "20190500005890",
"confidence_score": "0.250",
"page_number": 0
},
{
"x": 167,
"y": 574,
"width": 391,
"height": 54,
"value": "GB123456789",
"confidence_score": "0.250",
"page_number": 0
}
],
"data_type": "STRING"
},
{
"name": "issue_date",
"values": [
{
"x": 2072,
"y": 628,
"width": 240,
"height": 54,
"value": "2019-06-05",
"confidence_score": "0.358",
"page_number": 0
}
],
"data_type": "DATE"
},
{
"name": "total_amount",
"values": [
{
"x": 2146,
"y": 1196,
"width": 126,
"height": 54,
"value": "47.5300",
"confidence_score": "0.990",
"page_number": 0
}
],
"data_type": "NUMBER"
}
],
"line_items": [
[
{
"name": "Description",
"values": [
{
"x": 208,
"y": 1196,
"width": 1022,
"height": 50,
"value": "5/2019-MongoBackend-MgmtStandalone-Small-744 hours",
"confidence_score": "0.661",
"page_number": 0
}
],
"data_type": "STRING"
},
{
"name": "Price",
"values": [
{
"x": 2146,
"y": 1196,
"width": 126,
"height": 54,
"value": "47.5300",
"confidence_score": "0.582",
"page_number": 0
}
],
"data_type": "NUMBER"
},
{
"name": "Quantity",
"values": [
{
"x": 1979,
"y": 1196,
"width": 23,
"height": 54,
"value": "1",
"confidence_score": "0.647",
"page_number": 0
}
],
"data_type": "NUMBER"
}
]
],
"customer": null
}