Packing List

This section describes how to build your custom OCR API to extract data from Packing Lists using the API Builder. A Packing List itemizes the contents of each package (box, pallets, etc).

Prerequisites

You’ll need at least 20 Packing List images or pdfs to train your OCR.

Define your Packing List Use Case

Using the Packing List below, we’re going to define the fields we want to extract from it.
Packing List

  • Exporter: The name of the exporter
  • Exporter address: The exporter's address
  • Consignee: The consignee's name
  • Consignee Address: The consignee's address where the package must be delivered
  • Consignee Phone Number: The consignee's phone number
  • Method of dispatch: how the package is carried (sea)
  • Export Invoice Date: Issue date of the export invoice
  • Export Invoice Number: Identification number of the export invoice
  • Country of Origin: where the package comes from
  • Country of Final Destination: the package's final destination
  • Total Weight: total weight of package carried

That’s it for this example. Feel free to add any other relevant data that fits your requirement.

Deploy your API

Once you have defined the list of fields you want to extract from your Packing List, head over to the platform and follow these steps:

  1. Click on the Create a new API button on the right.

  2. Next, fill in the basic information about the API you want to create as seen below.

Set up your API

  1. Click on the Next button. The following page allows you to define and add your data model.

Define Your Model

There are two ways to add fields to your data model.

  • Upload a JSON config file
  • Manually add data

Data Model

Upload a JSON Config

To add data fields using JSON config upload.

  1. Copy the following JSON into a file.
{
  "problem_type": {
    "classificator": { "features": [], "features_name": [] },
    "selector": {
      "features": [
        {
          "cfg": { "filter": { "alpha": -1, "numeric": 0 } },
          "handwritten": false,
          "name": "exporter_name",
          "public_name": "Exporter Name",
          "semantics": "word"
        },
        {
          "cfg": { "filter": { "alpha": -1, "numeric": -1 } },
          "handwritten": false,
          "name": "exporter_address",
          "public_name": "Exporter Address",
          "semantics": "word"
        },
        {
          "cfg": { "filter": { "alpha": -1, "numeric": 0 } },
          "handwritten": false,
          "name": "consignee_name",
          "public_name": "Consignee Name",
          "semantics": "word"
        },
        {
          "cfg": { "filter": { "alpha": -1, "numeric": -1 } },
          "handwritten": false,
          "name": "consignee_address",
          "public_name": "Consignee Address",
          "semantics": "word"
        },
        {
          "handwritten": false,
          "name": "consignee_phone_number",
          "public_name": "Consignee phone number",
          "semantics": "phone"
        },
        {
          "cfg": { "filter": { "alpha": -1, "numeric": 0 } },
          "handwritten": false,
          "name": "method_of_dispatch",
          "public_name": "Method of Dispatch",
          "semantics": "word"
        },
        {
          "cfg": { "filter": { "convention": "US" } },
          "handwritten": false,
          "name": "export_invoice_date",
          "public_name": "Export Invoice Date",
          "semantics": "date"
        },
        {
          "cfg": { "filter": { "is_integer": -1 } },
          "handwritten": false,
          "name": "export_invoice_number",
          "public_name": "Export Invoice Number",
          "semantics": "amount"
        },
        {
          "cfg": { "filter": { "alpha": -1, "numeric": 0 } },
          "handwritten": false,
          "name": "country_of_origin",
          "public_name": "Country of Origin",
          "semantics": "word"
        },
        {
          "cfg": { "filter": { "alpha": -1, "numeric": 0 } },
          "handwritten": false,
          "name": "country_of_final_destination",
          "public_name": "Country of Final Destination",
          "semantics": "word"
        },
        {
          "cfg": { "filter": { "is_integer": -1 } },
          "handwritten": false,
          "name": "total_weight",
          "public_name": "Total Weight",
          "semantics": "amount"
        }
      ],
      "features_name": [
        "exporter_name",
        "exporter_address",
        "consignee_name",
        "consignee_address",
        "consignee_phone_number",
        "method_of_dispatch",
        "export_invoice_date",
        "export_invoice_number",
        "country_of_origin",
        "country_of_final_destination",
        "total_weight"
      ]
    }
  }
}
  1. Click on Upload a JSON config.
  2. The data model will be automatically filled.
  3. Click on Create API at the bottom of the screen.

Document Data Model filled

Manually Add Data

Using the interface, you can manually add each field for the data you are extracting. For this example, here are the different field configurations used:

  • Exporter Name: type String that never contains numeric characters.
  • Exporter Address: type String without specifications.
  • Consignee Name: type String that never contains alpha characters.
  • Consignee Address: type String without specifications.
  • Consignee phone number: type Phone Number.
  • Method of Dispatch: type String that never contains alpha characters.
  • Export Invoice Date: type Date with US format.
  • Export Invoice Number: type Number without specifications
  • Country of Origin: type String that never contains numeric characters.
  • Country of Final Destination: type String that never contains numeric characters.
  • Total Weight: type Number without specifications.

Once you’re done setting up your data model, click the Create API button at the bottom of the screen.

Document Data Model filled

Train your Packing List OCR

You’re all set! Now it's time to train your Packing List deep learning model in the Training section of our API.
Train your model

  1. Upload one file at a time or a zip bundle of many files.
  2. Click on the field input on the right, and the blue box on the left highlights all the corresponding field candidates in the document.
  3. Next, click on the validate arrow for all the field inputs.
  4. Once you have selected the proper box(es) for each of your fields as displayed on the right-hand side, click on the validate button located at the right-side bottom to send an annotation for the model you have created.
  5. Repeat this process until you have trained 20 documents to create a trained model.

To get more information about the training phase, please refer to the Getting Started tutorial.

 

Questions?
Slack Logo Icon  Join our Slack