IDR via de API: PDF-naar-XML conversie

PDF-facturen automatisch laten herkennen en converteren naar e-facturen via recognize hooks.

De Intelligent Document Recognizer (IDR) converteert PDF-facturen automatisch naar gestructureerde e-facturen. Via de PSB API stuur je de IDR aan met recognize hooks, waarmee je het herkenningsproces configureert: kwaliteitsniveau, prioriteit, extractiefeatures en partijgegevens. Dit artikel beschrijft hoe je de IDR via de API inzet.

Hoe werkt IDR via de API?

De IDR werkt als een hook in het PSB hook-systeem. Je registreert een recognize hook die luistert op een topic (bijv. InvoiceReceived). Wanneer een PDF-document binnenkomt via dat topic, stuurt de PSB het automatisch door naar de IDR voor herkenning. Na verwerking publiceert de IDR het resultaat op een callback-topic.

De hook-action voor IDR heeft het volgende formaat:

recognize://idr?quality={quality}&priority={priority}&features={features}&data={base64-data}
Parameters
quality

Het kwaliteitsniveau bepaalt hoe streng de IDR het herkenningsresultaat beoordeelt:

WaardeBeschrijvingdefaultStandaard kwaliteitsniveau (aanbevolen voor de meeste scenario's)hqHoge betrouwbaarheid: alleen resultaten met hoog vertrouwen worden geaccepteerdlqLagere kwaliteit toegestaan: meer resultaten, maar met lager vertrouwen
priority

De prioriteit bepaalt de verwerkingsvolgorde in de IDR-queue:

WaardeBeschrijvinghighVoorrang in de wachtrijmediumStandaard prioriteitlowVerwerking op achtergrond wanneer capaciteit beschikbaar is
features

Features activeren extra extractiemogelijkheden. Je kunt meerdere features combineren (komma-gescheiden):

FeatureBeschrijvingibanIBAN-extractie uit de PDFg-accountG-rekeningsplitsing herkennenorder-referenceOrderreferentie extraherenproject-referenceProjectreferentie extraherencontract-referenceContractreferentie extraheren

Voorbeeld: features=iban,g-account,order-reference

data (party details)

Het data-veld bevat base64-encoded JSON met gegevens van de ontvangende organisatie. De IDR gebruikt deze informatie om het herkenningsresultaat te verrijken en te valideren. De JSON bevat namen, identifiers, e-mailadres en adressen van de organisatie.

Voorbeeld van de JSON vóór base64-encoding:

{
  "names": ["Bedrijfsnaam B.V."],
  "identifiers": [
    { "type": "KVK", "value": "12345678" }
  ],
  "email": "facturen@bedrijf.nl",
  "addresses": [
    {
      "street": "Voorbeeldstraat 1",
      "postcode": "1234 AB",
      "city": "Utrecht",
      "country": "NL"
    }
  ]
}
Recognize hook registreren

Een complete recognize hook ziet er zo uit:

{
  "action": "recognize://idr?quality=default&priority=medium&features=iban,order-reference&data={base64-encoded-party-details}",
  "topics": ["InvoiceReceived"]
}

Registreer deze hook via het Hook endpoint:

POST /api/v1/hook

Of neem de hook direct op in een Enrollment-request.

Callback-topics

Na verwerking publiceert de IDR het resultaat op een van de volgende topics:

TopicBeschrijvingPurchaseInvoiceRecognizedPDF is succesvol herkend en geconverteerd naar een e-factuurPurchaseInvoiceRecognizedPendingHerkenning wacht op quality control (handmatige beoordeling)PurchaseInvoiceRecognizedRejectedHerkenning is afgewezen na quality controlPurchaseInvoiceRecognizedErrorEr is een fout opgetreden bij de herkenning

Stel een webhook of mailhook in op deze topics om het resultaat te ontvangen. Bijvoorbeeld:

{
  "action": "https://api.bedrijf.nl/idr/callback",
  "topics": ["PurchaseInvoiceRecognized", "PurchaseInvoiceRecognizedError"]
}
Bestandslimiet en ondersteunde formaten

De maximale bestandsgrootte voor IDR-uploads is 15 MB. Bestanden groter dan 15 MB geven een HTTP 413 (Content Too Large) foutcode.

De IDR ondersteunt de volgende bestandstypen:

FormaatToelichtingPDFPrimair formaat, zowel gescand als born-digitalJPEG / PNGAfbeeldingen van facturen (foto's, scans)TIFFMulti-page scans

Andere bestandstypen (Word, Excel, HTML) worden niet ondersteund en resulteren in een IDR422 Invalid PDF Content-fout. Beveiligde PDF's met wachtwoordbeveiliging of DRM geven een vergelijkbare foutmelding.

Verwerkingsflow

Het volledige IDR-proces via de API verloopt in vier stappen:

  1. Een PDF-document komt binnen via de PSB (upload of ontvangst via Peppol/SFTP/e-mail)
  2. De recognize hook stuurt het document naar de IDR met de geconfigureerde parameters
  3. De IDR verwerkt het document en publiceert het resultaat op het juiste callback-topic
  4. Je ontvangt het herkende document via je webhook of haalt het op via de PurchaseInvoice-endpoints
Veelgestelde vragen
Welke bestandstypen ondersteunt de IDR naast PDF?

Naast PDF ondersteunt de IDR ook JPEG, PNG en TIFF (inclusief multi-page TIFFs van scans). PDF is het primaire formaat en geeft de beste herkenningskwaliteit, zowel voor gescande als "born-digital" PDF's. Andere bestandstypen, zoals Word (.docx), Excel (.xlsx) of HTML, worden niet ondersteund en resulteren in een IDR422 Invalid PDF Content-fout. PDF's met wachtwoordbeveiliging of DRM-bescherming geven een vergelijkbare foutmelding en kunnen niet worden verwerkt. Zorg bij twijfel altijd voor een onbeveiligd PDF-bestand als invoer.

Hoe weet ik of een PDF succesvol is herkend?

Na verwerking publiceert de IDR het resultaat op een callback-topic in de PSB. Bij succesvolle herkenning verschijnt het resultaat op het topic PurchaseInvoiceRecognized; dit topic bevat het herkende document in UBL-formaat. Stel een webhook of mailhook in op dit topic om het resultaat automatisch te verwerken. Bij een fout, zoals een onleesbare scan of een niet-ondersteund bestandstype, verschijnt het bericht op PurchaseInvoiceRecognizedError met een foutcode. Je kunt het document ook opvragen via de PurchaseInvoice-endpoints als de webhook niet direct beschikbaar is.

Wat is de maximale bestandsgrootte voor IDR-uploads?

De maximale bestandsgrootte voor IDR-uploads is 15 MB. Bestanden groter dan 15 MB worden afgewezen met een HTTP 413 (Content Too Large) foutcode. Gescande documenten zijn soms onnodig groot als ze zijn opgeslagen met een hoge resolutie; een resolutie van 150-200 dpi is voor de meeste factuurscans voldoende voor correcte herkenning. Optimaliseer gescande bestanden voor levering: gebruik de comprimeer-functie van je scanner of PDF-software om de bestandsgrootte te reduceren zonder kwaliteitsverlies in de tekst. Born-digital PDF's zijn doorgaans veel kleiner en vormen zelden een probleem.


Meer weten over de PSB hook-architectuur? Lees het artikel over webhooks instellen en beveiligen.

Open de API-referentie