Scale Ticket OCR API
Turn photographed truck-scale tickets into normalized operational data without maintaining a parser for every facility layout.

Scale Tickets Are Structured—But Never Quite the Same
Truck scales, transfer stations, grain elevators, and material yards all print gross, tare, and net weight, but the row order, labels, units, and identifiers vary by device and operator. Plain OCR may read the characters while losing the relationship between a vehicle, a load, and its first and second weighing. Rule-based parsing then breaks as soon as a facility changes printer software or ticket layout.
One Scale Ticket Schema for Multiple Facilities
The StructOCR weighbridge ticket OCR engine classifies scale tickets, extracts their operational fields, and returns the same JSON structure across layouts. Each printed weight is preserved alongside a numeric value and normalized kilogram value. Try a real sample in the scale ticket scanner before integrating the API.
Live Demo: Weighbridge Ticket OCR Scanner
No registration required. Upload a file to test the extraction.
Drop files here or click to browse
JPG · PNG · WebP · up to 500 files · max 4.5 MB each
Practical Workflows
Truck Scale Software
Replace manual ticket entry in dispatch, gate, and yard-management applications.
Multi-Site Operations
Normalize different printer layouts into one downstream data contract.
Load Reconciliation
Match vehicle, material, job, and weight records before posting a transaction.
Exception Queues
Send missing weights or arithmetic mismatches to an operator for review.
Technical Specs
- Endpoint: POST /v1/weighbridge-ticket
- Authentication: x-api-key request header
- Input: Base64 or data URI in JSON; JPG, PNG, WebP, or PDF
- Maximum decoded size: 4.5MB
- Cost: 2 credits per successful request
- Output: Structured JSON with deterministic weight validation
Key Features
- Layout-aware extraction: Associates labels and values instead of returning a flat block of text.
- Supported units: Normalizes kilograms, metric tonnes, and pounds to normalized_kg.
- Ticket classification: Distinguishes supported scale-ticket families from unrelated documents.
- Review signals: Returns confidence, needs_review, and machine-readable review reasons.
Send a Ticket to the OCR API
The REST endpoint accepts one Base64-encoded JPG, PNG, WebP, or PDF in the JSON img property. Allow a 60-second client timeout and inspect the validation object before accepting a record.
import base64
import requests
with open("weighbridge-ticket.jpg", "rb") as file:
image = base64.b64encode(file.read()).decode("ascii")
response = requests.post(
"https://api.structocr.com/v1/weighbridge-ticket",
headers={"x-api-key": "YOUR_API_KEY", "Content-Type": "application/json"},
json={"img": image},
timeout=60,
)
response.raise_for_status()
result = response.json()
data = result["data"]
print("ticket_number:", data["ticket_number"])
print("vehicle.registration:", data["vehicle"]["registration"])
print("weights:", data["weights"])
print("validation:", data["validation"])Validated JSON Response
A successful response contains extracted evidence and a separate validation decision for downstream automation.
{
"success": true,
"data": {
"is_weighbridge_ticket": true,
"document_type": "generic_weighbridge_ticket",
"ticket_number": "1042",
"facility": {
"name": "North Yard Scale",
"address": null,
"scale_id": "SCALE-2"
},
"parties": {
"supplier": null,
"customer": "Example Customer"
},
"job": {
"job_number": "JOB-88",
"order_number": null
},
"vehicle": {
"registration": "AB12 CDE",
"trailer_registration": null,
"fleet_number": null,
"driver_name": null
},
"material": {
"description": "Recycled aggregate",
"code": "RA20"
},
"weights": {
"gross": {
"value": 25330,
"unit": "kg",
"raw": "25,330 kg",
"normalized_kg": 25330
},
"tare": {
"value": 6770,
"unit": "kg",
"raw": "6,770 kg",
"normalized_kg": 6770
},
"net": {
"value": 18560,
"unit": "kg",
"raw": "18,560 kg",
"normalized_kg": 18560
}
},
"confidence": "high",
"is_valid": true,
"validation": {
"calculated_net_kg": 18560,
"difference_kg": 0,
"weight_check_passed": true,
"needs_review": false,
"review_reasons": []
}
}
}Frequently Asked Questions
Is a scale ticket the same as a weighbridge ticket?
The names are often used interchangeably. The endpoint supports scale tickets, weighbridge tickets, weighment slips, and several operational subtypes through one schema.
Can different facilities use the same integration?
Yes. The endpoint is designed to normalize varying layouts into one response. Your application should still review low-confidence or flagged records.
Which files can I submit?
The endpoint accepts Base64-encoded JPG, PNG, WebP, and PDF content up to 4.5MB. Public URLs and multipart uploads are not currently accepted by the REST endpoint.
How much does one successful request cost?
A successful weighbridge ticket extraction costs 2 credits. New accounts receive 200 free credits, enough for up to 100 initial scans.
When is it safe to accept a ticket automatically?
Define the rule in your own workflow. A conservative starting point is to require is_weighbridge_ticket and is_valid to be true, confidence to meet your threshold, and validation.needs_review to be false. Keep a human review route for all other results.
Should I use the REST API or an SDK?
Use the REST API from any backend that can send Base64 JSON. The official Python and Node.js SDKs are convenient when you want local file validation, Base64 encoding, and consistent request handling without writing that plumbing yourself.
Explore More Weighbridge Ticket OCR Solutions
Convert a Weighbridge Slip to JSON
Convert weighbridge slips and scale tickets to structured JSON. Extract nested vehicle, material, gross, tare, net, timestamp, and validation fields.
Weight Ticket Data Extraction
Automate weight ticket data extraction for ERP and transport workflows. Capture vehicle, material, job, gross, tare, net, timestamps, and validation data.
Dump Ticket OCR API
Extract dump and disposal ticket fields including facility, vehicle, material, gross, tare, net weight, fee, and timestamps into validated JSON.
Gross, Tare & Net Weight Extraction
Extract gross, tare, and net weight from tickets, normalize kg, tonnes, and pounds, and validate printed net against gross minus tare.
Quarry Load Ticket OCR
Extract quarry load ticket data including material, customer, vehicle, job, gross, tare, and net weight. Return validated JSON for aggregate operations.
Technical Comparisons & Integrations
Explore platform integrations and competitive analysis
Add Receipt OCR to Your Bolt.new App in 5 Minutes
Step-by-step guide to integrating the StructOCR receipt API into a Bolt.new app. Build expense tracking and receipt scanning tools right in your browser.
Add VIN OCR to Your Bolt.new App in 5 Minutes
Step-by-step guide to integrating the StructOCR VIN scanner API into a Bolt.new app. Build automotive and fleet tools right in your browser.
Add Container OCR using Cursor in 5 Minutes
Step-by-step guide to integrating the StructOCR shipping container API using the Cursor AI code editor. Build logistics and yard management tools rapidly.
Add Driver's License OCR using Cursor in 5 Minutes
Step-by-step guide to integrating the StructOCR Driver's License scanner API using the Cursor AI code editor. Build car rental and mobility onboarding flows rapidly.
Add HIN OCR using Cursor in 5 Minutes
Step-by-step guide to integrating the StructOCR HIN (Hull Identification Number) scanner API using the Cursor AI code editor. Build marine and boat management tools rapidly.
Add Invoice OCR using Cursor in 5 Minutes
Step-by-step guide to integrating the StructOCR invoice API using the Cursor AI code editor. Build accounts payable and expense tracking tools rapidly.
From tutorial to production in 5 minutes.
You've seen the code. Now get your API key, grab your 200 free credits, and see it work with your own images. No credit card required.