Bill of lading OCR API
Logistics OCR API

Extract bill of lading data without rebuilding every shipment document by hand.

Bills of lading combine logistics metadata, party blocks, vessel references, and dense tabular cargo details. LeapOCR helps teams turn those documents into schema-fit JSON for TMS, customs, and operations workflows while keeping markdown available for review.

Why teams use this

Capture shipper, consignee, carrier, vessel, booking, and cargo details from BOLs.

Support scanned documents, freight forwarder PDFs, and image-heavy shipment paperwork.
Return line-level cargo data in JSON that fits downstream logistics systems.
Shipment data extraction

Logistics teams usually need one object for shipment metadata and another array for cargo lines or package details.

BOL request
  {  "url": "https://example.com/bill-of-lading.pdf",  "file_name": "bill-of-lading.pdf",  "format": "structured",  "instructions": "Extract shipper, consignee, carrier, vessel, booking number, and cargo line details.",  "schema": {    "type": "object",    "properties": {      "bol_number": { "type": "string" },      "shipper": { "type": "string" },      "consignee": { "type": "string" },      "cargo_lines": { "type": "array" }    }  }}

Why it works

What matters in bill of lading workflows

The useful question is whether the shipment data lands in a clean structure for operations, customs, and tracking systems.

Parties

Shipper and consignee blocks stay separate

Carrier, shipper, notify party, and consignee data can be extracted into named fields instead of buried inside page text.

Cargo

Cargo details stay row-oriented

Package counts, weights, container references, and commodity details can be returned in structured arrays for downstream systems.

Operations

One OCR layer for review and handoff

Markdown supports manual checks while structured output powers TMS, customs, and shipment workflows.

What you control

The core data teams usually need

Bills of lading vary by carrier and lane, but the downstream fields tend to repeat.

parties
Shipment actors

Shipper, consignee, and carrier

These party blocks need to stay distinct because they drive customs, routing, and downstream operations.

routing
Transport metadata

Vessel, booking, and routing details

Useful logistics workflows pull vessel names, booking references, and other routing metadata into named fields.

cargo
Line array

Package, weight, and commodity lines

The payload should preserve cargo rows so downstream systems can use the result without reparsing the page.

review
Readable output

Markdown for shipment exceptions

Markdown gives operators a readable version of the BOL when they need to verify a shipment detail or correct an exception.

Examples

Two common BOL workflows

Most teams either need shipment-ready JSON for systems or a readable logistics document for human review.

TMS handoff

Extract shipment metadata and cargo lines into JSON

This is the common pattern for logistics and freight teams pushing BOL data into TMS, customs, or internal tracking systems.

Parties and routing metadata stay separate.
Cargo details can be returned as arrays.
Useful for both digital and scanned shipping paperwork.
BOL result
json
  {  "bol_number": "BOL-77419",  "shipper": "Harbor Parts Ltd.",  "consignee": "Northwind Distribution",  "carrier": "Blue Ocean Freight",  "booking_number": "BK-440182",  "cargo_lines": [    { "description": "Industrial bearings", "packages": 12, "gross_weight_kg": 640.0 },    { "description": "Hydraulic seals", "packages": 6, "gross_weight_kg": 88.0 }  ]}
Ops review

Keep a readable bill of lading for checks and disputes

When shipment exceptions happen, operations teams still need a readable document view alongside the structured output.

Useful for exception handling and customs review.
Preserves party blocks and cargo tables in a readable layout.
Lets teams trace structured output back to the source.
Markdown excerpt
md
  # Bill of lading BOL-77419- Shipper: Harbor Parts Ltd.- Consignee: Northwind Distribution- Carrier: Blue Ocean Freight- Booking number: BK-440182## Cargo lines| Description | Packages | Gross weight (kg) || --- | ---: | ---: || Industrial bearings | 12 | 640.0 || Hydraulic seals | 6 | 88.0 |

FAQ

Questions teams ask before wiring this up

Straight answers for teams evaluating how this workflow fits into production.

Can LeapOCR extract carrier and cargo data from bills of lading?

Yes. Bill of lading workflows can return shipper, consignee, carrier, routing metadata, and cargo lines in a structured payload.

Why use a dedicated BOL OCR page instead of generic OCR?

Because logistics workflows usually need shipment-ready objects with party blocks and cargo rows, not just page text that still needs to be restructured.

Can BOL extraction support human review too?

Yes. Markdown can remain available for manual checks while JSON powers the downstream logistics workflow.

Ready to test

See how your bill of lading workflow holds up on real shipment documents

Use a real freight document and check whether the result fits your TMS or customs workflow without another parsing layer.