Om 10.12 komt een CMR-foto binnen. De order staat in je TMS, maar het aantal colli is met pen aangepast en het document mist een ritnummer. Als OCR meteen boekt, kan de CMR aan de verkeerde rit hangen voordat de afwijking zichtbaar wordt.
Een CMR-innameflow bewaart het oorspronkelijke document, haalt de relevante velden eruit, koppelt ze aan één bestaande transportorder en legt per veld vast waar de waarde vandaan kwam. Een medewerker beoordeelt ontbrekende of tegenstrijdige gegevens. Pas na die controle schrijft de koppeling de goedgekeurde velden één keer naar het TMS en leest zij het record opnieuw terug.
Een CMR is vervoersbewijs, geen vervanging van je orderrecord. De order legt afspraken vast; de CMR registreert vervoer. Juist daarom kan een CMR afwijken van de order. Bewaar het verschil in het TMS zonder de afspraak te overschrijven.
Wat je nodig hebt: vóór de eerste CMR door de intake gaat
De CMR-inname werkt pas wanneer document, order en rit elk hun eigen ID en eigenaar hebben. Teken eerst de huidige controle: waar kijkt iemand, wat beslist die persoon en wat wordt gecorrigeerd?
Artikel 6 van de CMR-conventie, gecontroleerd op 14 november 2026, noemt afzender, vervoerder, geadresseerde, laad- en losplaats, goederen, colli, gewicht of hoeveelheid, vervoerskosten en douane-instructies. Aanvullende vermeldingen hangen af van de situatie. Een interne orderreferentie, rit-ID of stop-ID komt uit je TMS en is geen vast CMR-veld.
Leg vooraf deze onderdelen klaar:
- Een vaste inkomende route. Gebruik een mailbox als cmr-in@bedrijf.nl, scanmap of uploadscherm. Noteer bron, ontvangsttijd, originele bestandsnaam en e-mailbericht-ID. Bewaar het ontvangen bestand ongewijzigd.
- Een testomgeving van je TMS. Vraag om functie om orders en ritten op te zoeken, documentkoppeling, beperkte schrijfrechten en read-back. Controleer of de API een idempotentiesleutel of een andere veilige herhaalroute ondersteunt.
- Een meetbare proefset. Verzamel 120 documenten uit de drie meest voorkomende varianten, met scans, telefoonfoto’s en e-mailbijlagen. Laat een medewerker de juiste waarden markeren voordat je een model beoordeelt.
- Een eigenaar per feit. Planning beheert order en rit; de reviewer corrigeert CMR-velden; de API-beheerder beheert koppeling en rechten. Wijs ook iemand aan die beslist over tekorten, schade en gewijzigde bestemmingen.
- Een veldlijst met twee lagen. Scheid CMR-velden van TMS-velden. Houd cmr_package_count apart van ordered_package_count. Bewaar de klantreferentie als documentwaarde en gebruik de gevonden TMS-order-ID als interne relatie.
- Een privacy- en bewaarbeleid. CMR’s bevatten namen, adressen en soms handtekeningen of kentekens. Beperk toegang tot bron en correcties, kies de opslaglocatie en wijs een bewaartermijneigenaar aan. Log een document-ID, geen onnodige persoonsgegevens.
- Een kosten- en tijdmeting. Meet twee weken volume, overtypetijd en uitzonderingen. Vraag implementatie, verwerking, opslag, koppeling en support apart te offreren. De OCR-prijs is niet de totale TMS-route.
Een vaste rit-ID maakt de documentrelatie terugvindbaar. Een ritdossier gebruikt dezelfde rit-ID om order, POD, tachograafverwijzing en factuur bij elkaar te houden. Hier ligt de grens bij gecontroleerde CMR-inname en de TMS-schrijfactie.
Concrete stappen: van binnenkomst naar teruggelezen ritrecord
De volgorde is belangrijk: eerst het document en zijn herkomst vastleggen, dan uitlezen en matchen, daarna pas beoordelen en schrijven. Een model mag een veld voorstellen. Het mag niet zelf bepalen welk TMS-record de waarheid wordt.
1. Bewaar het bestand vóór je het laat uitlezen
Geef ieder bericht of upload een bronrecord met document-ID, ontvangsttijd, kanaal, originele naam en SHA-256-hash. De hash herkent identieke bestanden, maar niet een opnieuw gefotografeerde pagina. Gebruik hem dus niet als enige duplicaatregel.
Bewaar bij e-mail het bericht-ID en de afzender; bij een scanner het scanmoment en de locatie; bij mobiel uploaden de account en tijd. Pas beeldverbetering alleen op een kopie toe. Zo blijft de ontvangen bron beschikbaar.
Gebruik aparte statussen zoals received, classified, matched, needs_review, approved, written en read_back_verified. received betekent alleen dat het bestand is aangekomen, niet dat de juiste rit is gevonden.
Controle: je kunt vanuit het intake-item het originele bestand openen en de herkomst, ontvangsttijd en document-ID terugvinden. Ontbreekt een van die vier, dan stopt de verwerking vóór OCR.
2. Herken de documentsoort en splits samengestelde bestanden
Bepaal eerst hoe de vrachtbrief binnenkomt: papieren scan, foto, platformexport of samengestelde PDF. Behandel een gestructureerde eCMR-export niet onnodig als pixels; bewaar de oorspronkelijke data. OCR is pas nodig als je alleen een PDF of foto ontvangt.
Classificeer als cmr_scan, cmr_photo, ecmr_export, avc, pod of unknown. Splits een pakket met meerdere documenten op de documentgrens en bewaar per deel de verwijzing naar het oorspronkelijke bestand. Zo koppel je zeven vrachtbrieven uit één charterfactuur los van elkaar.
Controleer vóór extractie of de pagina recht, volledig en scherp genoeg is. Een geaccepteerd uploadformaat garandeert niet dat handschrift of een onscherpe foto goed wordt gelezen; toets daarom ook de kwaliteit van je eigen CMR’s.
Controle: iedere pagina heeft een documentsoort en document-ID, en een reviewer ziet een melding als de pagina onvolledig of onleesbaar is. Laat unknown nooit automatisch als CMR doorstromen.
3. Leg per veld de bronpassage vast
Maak een veldschema vóór je een model of leverancier kiest. De CMR-bronpassage hangt af van het veld. Gebruik bijvoorbeeld deze mapping:
| TMS-invoerveld | Passage op de CMR | Controle vóór gebruik |
|---|---|---|
| Opmaakdatum en plaats | Plaats en datum van het opstellen van de vrachtbrief | Houd apart van laad- en losdatum |
| Vervoerder | Naam en adres van de vervoerder | Match met de vervoerderskaart in het TMS |
| Afzender en ontvanger | Aanduidingen afzender en geadresseerde | Controleer naam en adres tegenover de order |
| Laad- en losplaats/datum | Plaats en datum van inontvangstneming, plaats van aflevering | Koppel aan de juiste stop en orderversie |
| Goederenomschrijving | Aard van de goederen en verpakking | Bewaar ruwe omschrijving en genormaliseerde tekst |
| Aantal colli | Aantal, merken en nummers van pakketten | Vergelijk met de afgesproken hoeveelheid, niet eroverheen |
| Gewicht | Bruto-gewicht of andere hoeveelheid | Bewaar de eenheid en controleer bruto tegenover netto |
| Vrachtkosten | Vrachtprijs en eventuele bijkomende kosten | Gebruik dit niet zonder meer als factuurbedrag |
| Handtekening of voorbehoud | Handtekening, stempel of vak voor opmerkingen | Bewaar als beeld; leid geen akkoord af uit herkenning |
| Orderreferentie | Referentie of opmerking, soms in de e-mail | Geen vast veld; alleen exact aan de TMS-ID koppelen |
Sla per voorstel ruwe tekst, genormaliseerde waarde, document-ID, paginanummer en bronpassage op. Bewaar ook modelnaam en versie, confidence score, correctie, beoordelaar en tijdstip. Als de API een paginapositie levert, sla die mee op.
Als de intake ook pakbonnen, charters of facturen omvat, de bredere document-AI-stroom voor classificatie, uitlezing, validatie en archivering helpt die documenttypen naast elkaar te organiseren.
De op 10 november 2026 bijgewerkte Google Document AI-handleiding laat zien dat de API per pagina een tekstanker, confidence score en coördinaten van het tekstvak kan teruggeven. Die gegevens kunnen een veld herleidbaar maken naar de exacte tekst en paginapositie. Doxis AI.dp noemt JSON, XML en CSV als gestructureerde uitvoer. Vraag bij een demo of de gekozen API ook per veld de bronlocatie en score terugstuurt; ga er niet van uit dat elk JSON-veld automatisch bewijs bevat.
Bewaar ruwe en genormaliseerde waarden naast elkaar. 1.250 kg kan iets anders betekenen dan 1,250 kg. Normaliseer volgens je eigen regels, maar overschrijf de documenttekst nooit. Houd ook de oorspronkelijke OCR-uitkomst bij iedere correctie.
Controle: open vanuit ieder verplicht veld de juiste pagina en passage. Kan de reviewer de letterlijke bron niet aanwijzen, dan is het veld niet klaar voor matching.
4. Match eerst de order, daarna pas de rit of stop
Gebruik de TMS-orderreferentie als hoofdmatch. Zoek die exact op en sla het interne order-ID en, zodra bekend, de rit-ID op. Klantreferentie, interne rit-ID en CMR-documentnummer zijn verschillende waarden; bewaar ze apart.
Normaliseer alleen onschuldige verschillen zoals witruimte of hoofdletters. Verwijder geen voorloopnullen en maak geen klantnamen tot unieke sleutel. Als de orderreferentie ontbreekt, mag de koppeling kandidaten tonen op basis van afzender, laadplaats, losplaats en datum. Die combinatie is een zoekhulp, geen toestemming tot automatisch schrijven. Zijn er twee mogelijke orders, dan is de uitkomst ambiguous, niet de eerste kandidaat uit de lijst.
Controleer na de match afzender, ontvanger, laad- en losplaats en datum. Bij meerdere stops controleer je ook de stop-ID. Een match op alleen kenteken of plaatsnaam blijft in de reviewwachtrij.
Een TMS-test die een order, rit, bewijs en factuur door een mislukking volgt behandelt de bredere keten. Voor CMR-inname gebruik je dezelfde strengheid op een kleiner vlak: match op vaste ID, controleer de context en schrijf niet naar een nieuw record als je de bestaande order nog niet hebt bewezen.
Controle: er staat precies één interne order-ID als kandidaat en de vervoerder, ontvanger en route spreken die match niet tegen. Geen match of meer dan één kandidaat betekent geen schrijfactie.
5. Vergelijk CMR-waarden met de actuele orderversie
De CMR kan goederen, aantallen of gewicht noemen die afwijken van de order. Maak daarom per belangrijk veld een vergelijking tussen document_value en tms_order_value. Sla niet alleen match: false op. Bewaar het verschil, de gebruikte orderversie en de regel die de afwijking veroorzaakte.
Controleer getallen met de juiste eenheid. 18 colli en 18 pallets zijn niet hetzelfde. Een verschil tussen bruto- en nettogewicht is geen OCR-fout die je met een rekenregel mag gladstrijken. Controleer ook de datums: een opmaakdatum, laadmoment en aflevering kunnen op verschillende dagen vallen. Vergelijk niet alle datums met één TMS-veld.
Stel voor de eerste proef een duidelijke reviewgrens in. Als een verplicht identificatieveld ontbreekt, een orderreferentie geen exacte match heeft, een waarde in het document botst met de actuele order of een modelconfidence onder 0,95 ligt, stuur je het hele document ter beoordeling. 0,95 is een startinstelling voor routing, geen algemene kwaliteitsgarantie. Meet op de 120 gemarkeerde proefdocumenten per veld of de score samenhangt met fouten. De confidence van twee leveranciers is niet rechtstreeks vergelijkbaar.
Een correct gelezen waarde kan zakelijk toch onduidelijk zijn. Een CMR met 22 colli tegenover een order met 24 kan een gemeld tekort zijn. Bewaar het verschil en laat een bevoegde planner bepalen wat het voor de order betekent. OCR maakt een veld leesbaar, maar bepaalt niet of de zakelijke beslissing klopt.
Controle: elk verplicht veld is exact gematcht, expliciet als ontbrekend gemarkeerd of aan een reden en eigenaar gekoppeld. Er staat geen stilzwijgende 0, lege standaardwaarde of overgenomen waarde van een vorige rit.
6. Laat een eigenaar twijfelgevallen beoordelen
Maak van de uitzonderingswachtrij een werkvoorraad. Elke taak bevat reden, document-ID, bekende order- en rit-ID, bronpassage, herkende en verwachte waarde, eigenaar, deadline en toegestane actie. Gebruik vaste redenlabels voor ontbrekende referentie, dubbelmatch, beeldkwaliteit, hoeveelheid en read-back.
Wijs de taak toe aan de bronhouder. De planner beoordeelt aantallen; de documentbeheerder vraagt een nieuwe scan; de vervoerder kan een onleesbare aantekening verduidelijken. De API-beheerder herstelt techniek, niet de zakelijke afwijking.
Laat de reviewer de originele pagina naast de TMS-order zien. Geef knoppen of acties voor bevestigen, corrigeren, rescan aanvragen en niet matchen. Bij een correctie bewaar je de oude OCR-waarde, nieuwe waarde, bronpassage, beoordelaar en reden. Als de CMR zelf later wordt vervangen door een nieuw ondertekend document, maak je een nieuwe documentversie. Overschrijf de oude scan niet.
Controle: een ander teamlid kan zien waarom de taak openstaat, wie hem bezit en welk bewijs hem kan sluiten. Een taak zonder eigenaar of zonder sluitreden blijft open en blokkeert de schrijfactie.
7. Schrijf na akkoord één keer naar het bestaande TMS-record
Schrijf niet de hele CMR als nieuwe transportorder in. Het TMS bezit de order; de documentlaag levert bewijs en waarnemingen aan. Na goedkeuring koppel je het oorspronkelijke bestand aan de bestaande order of rit, schrijf je alleen de overeengekomen CMR-velden en registreer je de documentstatus, reviewer en reviewtijd. Houd de afgesproken orderhoeveelheid apart van de op de vrachtbrief waargenomen hoeveelheid.
Gebruik een idempotentiesleutel als de API dat ondersteunt, bijvoorbeeld een vaste combinatie van document-ID, intern order-ID en mappingversie. Sla de sleutel lokaal op voordat je de request verstuurt. De op 14 november 2026 geraadpleegde richtlijn van Developer Overheid beschrijft hoe dezelfde sleutel bij een herhaalpoging een dubbele POST of PATCH voorkomt en waarom de sleutel vooraf duurzaam opgeslagen moet zijn. Een herhaalde schrijfactie hoort dezelfde sleutel te gebruiken en dezelfde servertoestand te behouden.
Behandel een time-out als een onbekende uitkomst, niet als een mislukte schrijfactie. Vraag eerst het doelrecord op via de externe referentie of idempotentiesleutel. De Microsoft API-richtlijn, gecontroleerd op 14 november 2026, zegt dat POST en PATCH alleen opnieuw moeten worden geprobeerd wanneer de API een veilige herhaling documenteert. Een foutstatus maakt een niet-idempotente schrijfactie niet vanzelf veilig om te herhalen.
Leg in het koppelcontract schrijfbare velden, doelrecord en verwachte API-reactie vast. Inventariseer eerst welke connector, API of import je TMS aanbiedt via de route voor systeemkoppelingen. Schrijf niet rechtstreeks in de database tenzij de leverancier dat ondersteunt en je validatie, logging en read-back behoudt.
Controle: na akkoord bestaat één schrijflogregel met document-ID, order-ID, idempotentiesleutel, payloadversie en API-antwoord. Een tweede poging zonder eerst de doeltoestand op te vragen is een blokkade, geen herhaalpoging.
8. Lees het record terug en sluit pas daarna de intake
Vraag het TMS na de schrijfactie opnieuw om het order- of ritrecord. Vergelijk order-ID, rit-ID, document-ID, status, aantallen, gewicht en bronbestand met wat de reviewer vrijgaf. Bewaar het TMS-record-ID. Een 200- of 201-status vervangt die controle niet.
Wijkt één veld af, zet de taak op read_back_mismatch. Start geen nieuwe POST. Controleer eerst of het TMS de schrijfactie nog verwerkt, een veld afwees of een waarde overschreef. Laat de eigenaar daarna een gerichte correctie beoordelen.
Sluit pas wanneer bron, match, review, schrijven en read-back hetzelfde document-ID dragen. Exporteer periodiek een testcase met e-mailmetadata, scan, veldvoorstellen, correcties, goedkeuring en TMS-record. Daarmee controleer je of het archief ook de relatie met de rit bewaart.
Controle: een tweede medewerker kan vanuit het TMS-record terug naar de oorspronkelijke CMR, de relevante passage en het vrijgavebesluit. Ontbreekt één schakel, dan staat de intake nog niet op verified.
Valkuilen: waar de keten stilletjes fout gaat
Een CMR-nummer wordt voor een order-ID aangezien
Een documentnummer kan uniek zijn voor de vervoerder maar onbekend zijn in jouw TMS. Hetzelfde geldt voor een referentie van de klant die niet gelijk is aan het interne order-ID. Bewaar document-, klant- en interne referenties afzonderlijk. Gebruik de CMR-referentie nooit als automatisch nieuw ordernummer.
Het model leest een teken goed, maar de eenheid verkeerd
Een model kan 18 correct zien en toch niet weten of het om colli, pallets of kilogram gaat. Neem de eenheid mee in het veldschema en vergelijk alleen waarden met dezelfde eenheid. Ontbreekt de eenheid op de CMR, laat de reviewer die betekenis vaststellen. Vermenigvuldig of converteer geen waarden op basis van een eerdere rit.
Een hoge confidence verbergt een verkeerde ritmatch
Confidence beschrijft hoe sterk een model een veld voorspelt. Het zegt niet dat de afzender de juiste klant is of dat de order bij de actuele rit hoort. Houd extractie en matching als aparte controles. Een hoge score mag nooit een dubbele match, afwijkende bestemming of ontbrekende orderreferentie wegdrukken.
De uitzonderingswachtrij is een gedeelde inbox
Een e-mail met onderwerp CMR klopt niet vertelt niet welke waarde afwijkt, wie moet beslissen of wanneer de taak klaar is. Maak per document een taak met bronpassage, verwachte waarde, eigenaar en sluitreden. De mailbox kan een ingang zijn, maar is geen statusregistratie.
De schrijfactie wordt na een time-out dubbel uitgevoerd
Bij een time-out kan het TMS de schrijfactie al hebben verwerkt zonder dat de API-antwoord aankwam. Een nieuwe POST kan dan een tweede documentkoppeling of een nieuw record maken. Vraag het TMS eerst op met dezelfde idempotentiesleutel of document-ID. Als de API dat niet ondersteunt, zet de uitkomst in een handmatige controle voordat je opnieuw schrijft.
De scan wordt de nieuwe waarheid
Als een reviewer de herkenning corrigeert, mag die correctie de oorspronkelijke CMR niet wijzigen. Bewaar de originele scan, de ruwe OCR-uitkomst en de goedgekeurde waarde naast elkaar. Een latere, gewijzigde vrachtbrief krijgt een nieuw versienummer en een nieuwe review.
Een eCMR-export wordt als foto behandeld
Een platformexport kan al gestructureerde velden en een eigen document-ID bevatten. OCR op een screenshot verwijdert die structuur en maakt herkomst moeilijker te controleren. Vraag bij een eCMR-aanbieder eerst om de export of API. Als alleen een scan beschikbaar is, gebruik dezelfde reviewroute als voor een papieren CMR.
Beslis-kader: welke CMR-inname past bij jouw werkstroom?
Kies op volume, documentindelingen, gemeten uitzonderingen en de schrijf- en terugleesmogelijkheden van je TMS. Ik gebruik circa 50 CMR’s per maand en maximaal drie documentindelingen als eigen startheuristiek voor de route die ik als eerste zou testen. Het is geen marktgemiddelde, technische limiet of universele break-even. Meet op 120 representatieve documenten de handmatige verwerking, de gewone reviewtijd en de extra tijd voor uitzonderingen. Een uitzonderingspercentage van hooguit 10% is ook alleen een startdoel voor die proef; elke afwijking blijft zichtbaar.
Je kunt de maandelijkse netto arbeidswaarde zo ramen: ((handmatige minuten per CMR − basisreviewminuten per CMR) × maandvolume − aantal uitzonderingen × extra minuten per uitzondering) × uurtarief / 60 − totale maandkosten. De basisreviewminuten zijn de gewone beoordeling per document, zonder de extra afhandeling van uitzonderingen. Trek als maandkosten alle terugkerende verwerkings-, koppel-, opslag-, support- en beheerkosten mee. Verdeel eenmalige implementatiekosten over de periode waarmee je rekent. Meet basisreview en uitzonderingswerk apart. Als je gemeten totale reviewtijd de uitzonderingen al bevat, trek die extra minuten niet nogmaals af: gebruik dan (handmatige minuten × maandvolume − totale reviewminuten) × uurtarief / 60 − totale maandkosten.
Handmatige intake met TMS-bijlage is een logische eerste route om te toetsen bij een volume ruim onder circa 50 CMR’s per maand en één of twee herkenbare indelingen. Een medewerker matcht de order, controleert de CMR en voegt de scan met vaste referentie toe. Kies deze route als de gemeten besparing de totale koppel-, opslag- en beheerkosten niet dekt.
Specialistische CMR-documentflow met handmatige vrijgave past als de TMS-API geen veilige schrijfactie of read-back biedt. Laat de leverancier documenten herkennen en een order voorstellen. Een medewerker controleert en voegt de CMR toe via de bestaande TMS-functie.
Specialistische CMR-documentflow met TMS-koppeling is een route om rond of boven circa 50 CMR’s per maand als eerste te testen wanneer je één TMS en maximaal drie indelingen hebt. In de proef kun je hooguit 10% uitzonderingen als startdoel gebruiken. Deze grenzen zijn mijn heuristiek, geen leverancierslimiet of garantie op terugverdienen. Laat de leverancier bronpassages, de ordermatch, het schrijfcontract en de read-back met jouw documenten demonstreren en toets de offerte aan je gemeten besparing en totale kosten.
Maatwerk document-AI-laag rond je TMS is het onderzoeken waard bij meer dan drie indelingen, meerdere TMS’en, structureel veel uitzonderingen of verplichte brongegevens die een standaarddienst niet teruggeeft. Kies deze route alleen wanneer het TMS veilig kan schrijven en teruglezen, en de gemeten besparing de bouw- en beheerkosten dekt.
Met de voorbeeldwaarden uit de volgende casus levert een volume van 50 CMR’s ongeveer €64 bruto arbeidsbesparing per maand op, vóór terugkerende maandkosten. Dat is een rekenvoorbeeld, geen harde aankoopgrens. Bepaal je eigen omslagpunt met gemeten uitzonderingen en de volledige kosten van verwerking, koppeling, opslag en beheer.
Vergelijk modellen op jouw scans, niet op een algemene belofte. Google Document AI noemt trainingsrichtwaarden per methode: generatieve basismodellen 0 tot 50 of meer documenten, eigen extractiemodellen 10 tot 100 of meer en een vaste sjabloon drie voorbeelden. De benodigde hoeveelheid hangt af van documentindelingsvariatie; het zijn geen nauwkeurigheidsgaranties voor CMR’s. Google publiceerde die bandbreedtes in zijn op 10 november 2026 bijgewerkte handleiding voor de Custom Extractor.
Gebruik deze keuzehulp als eerste route door het kader. De volumes en indelingsaantallen zijn startheuristieken; jouw meetresultaten en totale maandkosten bepalen de uiteindelijke grens.
Hoeveel CMR-documenten verwerk je per maand?
De keuzehulp volgt hetzelfde kader. Zij gebruikt volume, uitzonderingen en TMS-mogelijkheden als eerste selectie, niet als vervanging van je eigen berekening.
Uitgewerkt voorbeeld: Noordroute verwerkt één afwijkende CMR
Noordroute Distributie is fictief. Het verwerkt 420 CMR’s per maand: 252 PDF-scans, 126 telefoonfoto’s en 42 e-mailbijlagen. De drie documentindelingen tellen gemiddeld twee pagina’s. Handmatige verwerking kost vier minuten per document.
Noordroute test Google Document AI Custom Extractor met een kleine adapter naar het bestaande TMS, omdat het per veld paginapositie en tekstanker wil bewaren. De extractor krijgt het veldschema; de adapter bewaart die bronverwijzingen; het TMS blijft eigenaar van order en rit. Het team markeert 120 voorbeelden, 40 per documentindeling. De proef moet een unieke order-ID, zichtbare bronpassages en geen dubbele TMS-registraties opleveren.
In de proef komt CMR-2026-11014 binnen met orderreferentie ORD-2026-1142. De TMS-zoekactie vindt één order en koppelt die aan rit RIT-2026-1114-07. De afzender, ontvanger en losplaats komen overeen. Op pagina 1 leest het model bij het veld aantal colli 22, met confidence 0,93. Het veld wordt vastgelegd met de brontekst 22 colli, paginanummer 1 en de plek van het veld in de afbeelding. De TMS-order bevat 24 colli.
Omdat het aantal afwijkt en de score onder de ingestelde 0,95 ligt, maakt de koppeling geen schrijfactie. De planner ziet de CMR en de order naast elkaar. Hij controleert de ondertekende laadnotitie en bevestigt dat op de CMR 22 colli zijn geregistreerd, terwijl de order op 24 colli blijft staan. De reviewer corrigeert geen bronbestand en verandert de afgesproken orderhoeveelheid niet. Hij keurt een documentrecord met cmr_package_count=22, ordered_package_count=24 en variance_package_count=-2 goed, met reden quantity_mismatch.
Na akkoord schrijft de koppeling het document en die drie velden één keer naar het bestaande ritrecord. Het API-antwoord komt in deze proef goed binnen. De read-back bevestigt het TMS-order-ID, rit-ID, document-ID, 22 colli op de CMR, 24 colli op de order en de afwijkingsstatus. De oorspronkelijke CMR, ruwe OCR-waarde, correctiegeschiedenis en beoordelaar blijven aan het record gekoppeld. De rit is dus bijgewerkt met het bewijs en de afwijking, zonder dat de order stilzwijgend wordt herschreven.
Het team meet vervolgens de tijd met dezelfde definities. De handmatige route kost 420 × 4 = 1.680 minuten, oftewel 28 uur per maand. De gewone eerste review, exclusief vervolgwerk voor uitzonderingen, kost 1,5 minuut per document: 420 × 1,5 = 630 minuten of 10,5 uur. Tien procent van 420 is 42 uitzonderingen. Als elke uitzondering gemiddeld 3 extra minuten vraagt, komt daar 42 × 3 = 126 minuten, oftewel 2,1 uur bij. De totale reviewtijd is dan 756 minuten of 12,6 uur; de besparing is 924 minuten of 15,4 uur per maand.
Bij een aangenomen volledig uurtarief van €35 vertegenwoordigt 15,4 uur 15,4 × €35 = €539 aan maandelijkse arbeid. Dat is een bruto arbeidsbesparing, geen netto contractbesparing: implementatie, beheer, opslag en de leveranciersprijs moeten er nog af. De gemiddelde tweepagina-CMR betekent 420 × 2 = 840 pagina’s per maand. Op de Google-prijspagina die op 14 november 2026 is gecontroleerd kost Custom Extractor US$30 per 1.000 pagina’s tot de eerste miljoen; 840 ÷ 1.000 × US$30 = US$25,20 aan verwerkingskosten. Dat bedrag is alleen de extractor, niet de TMS-adapter of opslag.
De uitkomst is een reden om de gecontroleerde koppeling verder te testen, geen reden om alle documenten direct automatisch vrij te geven. Noordroute moet na de proef ook een time-out, een ontbrekende orderreferentie en een tweede kandidaat-order doorlopen. De financiële keuze volgt pas als de totale maandkosten onder de bespaarde arbeid en de vermeden herstelkosten blijven.
Vergelijkingstabel: vier routes voor CMR-uitlezing en TMS-koppeling
De leveranciers- en prijsinformatie is op 14 november 2026 op de genoemde product- en documentatiepagina’s gecontroleerd. De tabel scheidt wat die pagina’s bevestigen van wat je met een gelijke proefset in een demo moet laten zien. De gespecialiseerde aanbieders publiceren op deze productpagina’s geen vaste totaalprijs; EasyData noemt wel een prijs per document die afhangt van documenttype en volume.
| Aanbieder | Invoer en velden die de bron bevestigt | Uitvoer en TMS-koppeling die de bron bevestigt | Review die de bron beschrijft | Wat je nog in de demo moet aantonen | Prijsstatus op 14 november 2026 |
|---|---|---|---|---|---|
| Scan Sys ImageCapture | CMR, AVC, pakbon, leveringsbon en POD; scan, e-mail, PDF, batchimport, TMS of boordcomputer. Kan documenttypes herkennen en meerbladige pakketten splitsen. De pagina publiceert geen veld-voor-veld CMR-schema. | Koppelt aan order, rit, levering of dossier met barcode, dossiernummer, ritinformatie, openstaande ritten of handmatige selectie. Kan een status naar TMS of administratie terugschrijven en documenten digitaal archiveren. Geen specifiek API-payloadschema gepubliceerd. | Beschrijft controle en aanvulling van onder meer manco’s, brutogewicht, gewichtsverschillen, schade en opmerkingen; een procesvisual bevat ook fiatteren. De pagina specificeert niet wie fiat geeft of of dit vóór de TMS-write verplicht is. | Laat per CMR-veld de waarde en bron zien; toon het echte API-verzoek en antwoord, de matchregels, de uitzonderingseigenaar, akkoord vóór schrijven, status-terugschrijving en read-back. | Geen vaste totaalprijs op de productpagina. Vraag prijs voor volume, TMS-koppeling, opslag en beheer. |
| Doxis AI.dp van Klippa | JPG, JPEG, PNG, PDF, DOC, DOCX, XLSX, HEIC, WebP en meer. Noemt onder meer zendingsnummer, vervoerder, ophaaldatum, goederensoort en -hoeveelheid, laad- en losadres, transportprijs, kenteken, opdrachtgever, handtekening en stempel. Velden zijn aanpasbaar. | Kan gegevens als JSON, XML of CSV aanleveren en doorsturen naar software naar keuze. De productpagina specificeert geen TMS-ordermatch, API-schema of read-back. | Noemt workflowautomatisering voor onder meer goedkeuring, maar beschrijft geen specifieke CMR-reviewstap of eigenaar vóór een TMS-write. | Laat de ingestelde CMR-velden en volledige API-output zien, inclusief eventuele bronpositie en score; demonstreer ordermatch, reviewer, akkoordpoort, foutafhandeling en TMS-read-back. | De productpagina toont geen vaste CMR-prijs; vraag een offerte of demo op dezelfde proefset. |
| EasyData transportdocumenten | Scan of foto via mobiele app, scanner of e-mail; kan meerbladige documenten splitsen en classificeren. Noemt herkenning van alle CMR-velden, waaronder handgeschreven notities, stempels en handtekeningen. | Beschrijft automatische ordermatching, ook zonder referentienummer, en aansluiting via API of databasekoppeling. Een specifiek JSON-, XML- of ander veld-voor-veld uitvoerschema is niet gepubliceerd. | Zegt afwijkingen en complexe handschriften naar menselijke verificatie te sturen; de reviewer krijgt AI-suggesties. | Laat het uitvoerschema, de matchkandidaten bij ontbrekende of dubbele referenties, de reviewstatus en eigenaar, akkoord vóór schrijven en de opgeslagen TMS-waarden na read-back zien. | Prijs per document op basis van documenttype en volume; de pagina biedt een proof of concept met eigen documenten, maar geen vast tarief. |
| Google Document AI Custom Extractor | Maakt een eigen entiteitenschema mogelijk wanneer geen passend vooraf getraind model beschikbaar is, maar de genoemde documentatie geeft geen CMR-specifieke lijst met invoervarianten of standaardvelden. De trainingsmethode hangt af van layoutvariatie; genoemde richtwaarden zijn 0–50+ voorbeelden voor een generatief basismodel, 10–100+ voor een eigen model en drie voor een vaste template. Dit zijn geen CMR-nauwkeurigheidsgaranties. | De JSON Document-respons kan entiteiten en tekst bevatten met confidence, tekstankers en paginapositie/geometrie. De ordermatch en TMS-koppeling bouw je zelf. | Confidence-drempels kunnen lage-scores naar handmatige review sturen; een complete reviewworkflow of toegewezen eigenaar komt niet uit de extractie-API. | Test je eigen scans en foto’s; toon toegestane invoerformaten en laat per gemarkeerd veld bron en score, handmatige beslissing, unieke ordermatch, veilige write, time-out en read-back zien. | In de eerste gepubliceerde tariefkolom: US$30 per 1.000 pagina’s tot 1 miljoen, daarna US$20; Enterprise OCR kost US$1,50 per 1.000 pagina’s na de eerste 1.000 gratis. Koppeling, opslag en beheer komen erbij. |
Toewijzing aan een eigenaar en akkoord vóór schrijven zijn aanbevolen procescontroles in deze gids, geen standaardfuncties die ik op basis van de genoemde productpagina’s aan een leverancier toeschrijf. EasyData noemt expliciet menselijke verificatie bij complexe handschriften en afwijkingen, maar publiceert geen volledig akkoord-tot-write-contract. Vraag daarom iedere leverancier de eigenaar, beslissing, API-uitvoer, foutuitkomst en read-back op jouw test-TMS te demonstreren.
Google Document AI rekent in de eerste gepubliceerde tariefkolom US$1,50 per 1.000 pagina’s voor Enterprise Document OCR na de eerste 1.000 gratis pagina’s. Custom Extractor kost US$30 per 1.000 pagina’s tot de eerste miljoen en daarna US$20 per 1.000 pagina’s. Dit zijn verschillende verwerkingsstappen: OCR levert tekst en lay-outinformatie; Custom Extractor haalt eigen entiteiten uit een documenttype. De actuele prijspagina toont beide tarieven en de staffel.
Een specialistische dienst past als hij jouw formulieren, review en TMS ondersteunt. Een eigen model past bij afwijkende documentindelingen of regels. Vergelijk bronpassage, match, eigenaar van de uitzondering, schrijfcontract en read-back, niet alleen herkenning.
Een CMR is pas in het TMS verwerkt als je vanuit het ritrecord terug kunt naar het originele bestand, de passage achter elk belangrijk veld, de ordermatch en het reviewbesluit. Die terugweg maakt de automatische stap controleerbaar wanneer de volgende afwijking binnenkomt.
Veelgestelde vragen
CMR-inname zonder overtypen
Ik denk mee met de juiste document- en TMS-grens, ontwerp de reviewroute en realiseer de koppeling van bronpassage tot teruggelezen ritrecord.
Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.
