Skip to content

A poor CMR photo goes straight back to the driver. A readable document reaches settlement with every field tied to the image.

A driver sends a CMR or proof-of-delivery photo. The system first checks brightness, contrast, sharpness, and framing. A poor image triggers a request for another photo. A readable document receives one extraction, which an operator reviews before further use.

Transport documentsDemonstration systemReview your transport document flow

Verified demonstration scope

The demonstration covers prepared CMR image variants. Unreadable photos are stopped before extraction, and the readable document’s result waits for operator review.

Recorded test
Verified demonstration scope
What we tested
Transport documents
Measurement data
test data

Problem, solution, and result

  1. Why a poor photo delays settlement

    An operator opens each image and attempts to read it before discovering that it is overexposed, dark, or cropped. The request for a replacement reaches the driver too late.

  2. What the system does

    The system first checks five image-quality features. A photo below the agreed threshold is stopped and returned for correction. A readable document is extracted once, and the operator reviews the result.

  3. What we tested

    The demonstration covers prepared CMR image variants. Unreadable photos are stopped before extraction, and the readable document’s result waits for operator review.

For whom

This fits a carrier or freight operator that receives document photos from the road and spends time manually finding unreadable images.

Photo → quality check → extraction → decision

  1. 01Image quality is checked before a model call
  2. 02Photos below 0.72 return for correction
  3. 03The operator approves fields before settlement
Best for
Carriers, freight forwarders, and logistics operators
Input data
CMR and POD photos from the road, uneven quality
Human decision
The operator checks extracted fields and decides whether the document can proceed to settlement
Cost
USD 0.007617 for the recorded read of one document.
Security
An unreadable image is stopped before extraction and returned to the driver with a request for a new photo.
Test scope
The demonstration uses prepared images. Accuracy and reading time must be confirmed on the client’s documents.
Audit trail
The history shows the image-quality assessment, the extraction decision, and the operator’s approval.
Similar system build
from €3,500 net (approx. $3,800) · 2–6 weeks

Reference exchange rates: USD 1 = PLN 3.72; EUR 1 = PLN 4.30. PLN amounts are rounded, with the measurement currency retained in parentheses.

Operator decision

What remains with the operator

The system assesses image quality and prepares extracted fields. The operator verifies the result and decides whether the document can support settlement. The system does not issue invoices or confirm delivery.

Cost
USD 0.007617 for the recorded read of one document.
Security
An unreadable image is stopped before extraction and returned to the driver with a request for a new photo.

Limits of the current test

All 7 images come from one blank CMR template with synthetic data. Before deployment, the quality threshold and extraction performance need testing on phone photos, routes, and working conditions typical for the client.

Estimated impact

Calculate the impact at your volume

This estimate uses the stated volume. Enter your own numbers to assess the possible impact in your company. The result is confirmed only during a pilot.

  1. Today

    108 late resubmissions

  2. With the system

    36 late resubmissions

  3. Time or cost saved

    55-90 fewer resubmissions/mo, base 72

Volume
900 documents/mo
Formula
900 x 8 pp
Calculation status
medium

Data in the screenshots. The names, amounts, and documents shown in the screenshots are synthetic. Client data remains private. Measurements describe the demonstrator and are kept separate from production outcomes.

Working views

The operator reviews data from readable documents. The system immediately returns images that cannot be extracted reliably.

The operator spends time on readable documents and exceptions that require judgment. The driver receives quick feedback on a poor photo before it can hold up an invoice.

Document queue, image check, and extracted fields.

Document queue

Photos from the road with quality status and next action.

Image check

Five quality measures and the specific reason for blocking.

Document extraction

Fields displayed beside the image for operator review.

System screens

See how the system works in practice

These desktop and mobile screenshots come from the running application. They show the process and the points where a person makes the decision.

Screens
8
px
1440 · 390
011440×1100
Queue with image-quality results and 97% legibility against a 72% threshold.
390390×844
  1. 021440×1100
    Unreadable image with a blocking reason.
  2. 031440×1100
    Readable document with extracted fields.
Open the remaining screen archive (5)
  1. 041440×1100
    A single read
  2. 051440×1100
    Matching to jobs
  3. 061440×1100
    Ready to invoice
  4. 071440×1100
    Decision history
  5. 081440×1100
    Station rules

Technology stack

Plain Python, because entry to the model is decided by a measurement in code.

The process is a straight line with a single branch, so an orchestration framework would be ballast; an orchestration framework adds no value here. Pillow measures the image, one vision call reads a legible document, PostgreSQL keeps the result and the trace. A stack like this is audited by reading the code, and maintenance comes down to calibrating the threshold and watching the API contract.

Python + FastAPI
runs the process without an orchestration framework
Pillow
measures brightness, contrast, edge energy, overexposure, and frame coverage
Anthropic Vision
performs the single structured extraction once the gate passes an image
PostgreSQL
stores the result, the gate decision, and the run trace
MinIO
holds the photo files and materialised images
Next.js
shows the scan inspection with fields at their source regions

The client owns the code, prompts, evaluation data, and documentation; the whole system is four services in Docker Compose. We use the public Anthropic SDK, and the model only ever sees images the gate has passed.

Technical details and measurements

How the system works

It first checks whether the document can be read.

The system assesses the image locally. A poor photo ends with a clear request to the driver. A readable photo receives one extraction, and the operator sees the result beside the document.

01

CMR or proof-of-delivery photo

02

Image quality check before any model call

03

Poor image returns to the driver

Readable image receives one extraction

04

The operator verifies fields and decides

System architecture

A gate in code, one extraction, regions, and a trace.

A deterministic image measurement, a single vision call, and an interface where every field leads to its place on the photo.

  1. 01

    Measurement

    Five image features computed by code.

    Brightness, contrast, edge energy, overexposure share, and frame coverage make up the legibility score against a 0.72 threshold. The same image always gets the same score.

  2. 02

    Refusal

    Below the threshold, the run ends explicitly.

    The refusal carries the measured values and a request for a new shot. The quality gate stops the document before extraction, so an image below the threshold cannot continue to the reading step.

  3. 03

    Extraction

    A legible image gets one call.

    The vision model returns fields pinned to regions of the image, so the operator compares each value with the place it came from, without searching the whole photo.

  4. 04

    Decision

    The result goes to operator review.

    Fields remain next to their visible source regions. The reference view lets the operator inspect them, but it does not persist an approval, correction, or operational record.

Why the measurement stands before the model

The reverse order, model first and assessment second, produces confident-looking fields from illegible images and a bill for every attempt. Here, entry to the model is decided by a measurement in code, recorded in every run. There is no orchestration framework, because the process is a straight line with a single branch; an orchestration framework adds no value here.

  • The legibility measurement is deterministic and testable
  • A blocked image generates neither fields nor cost
  • Extraction fields are pinned to regions of the photo
  • The reference view does not persist a human decision

Want to assess a similar process in your company?

  • A 30-minute call with the engineer who would lead the work.
  • A review of the processes that cost you the most time and money.
  • A written summary of what to automate first and the likely cost range.
€030 minutes · written takeaway within 2 business days
Book a free process scan (30 min)

Times are shown in your own time zone. We work with clients across time zones.

The scan is free and creates no obligation. If automation is unlikely to pay off, the written recommendation will say so.