This article walks you through the building process of an OCR API that extracts data from US Visas using our deep learning engine. It will work for any visa issued by the United States of America.


  1. You’ll need a beta account. Sign up and confirm your email to login.
  2. You’ll need at least 20 US Visa images or pdfs to train your OCR.

Define your US Visa use case

First, we’re going to define what fields we want to extract from your US Visa.

US Visa key data extractionUS Visa key data extraction

US Visa key data extraction

  • First name: The first name of the visa holder (Happyperson)
  • Last name: The last name of the visa holder (Traveler)
  • Passport number: The passport number of the visa holder (AB1234567)
  • Control Number: The visa control number (20191234567890)
  • Visa type: The visa type appearing on the US Visa (B1/B2)

That’s it for our use case. Feel free to add any other relevant data to fit your requirements.

Deploy your API

Once you have defined the list of fields you want to extract, head over to the platform and press the ‘Create a new API’ button.

You land now on the setup page. Here is the image you can use to set up the API. For instance, my setup is as follows:
Set up your APISet up your API

Set up your API

Once you’re ready, click on the “next” button. We are going to specify the data types for each of the fields we want our API to extract.

Define your modelDefine your model

Define your model

To move forward, you have two possibilities:

Upload a json config
Copy the following JSON into a file and upload it on the interface

  "problem_type": {
    "classificator": { "features": [], "features_name": [] },
    "selector": {
      "features": [
          "cfg": { "filter": { "alpha": -1, "numeric": 0 } },
          "handwritten": false,
          "name": "first_name",
          "public_name": "First name",
          "semantics": "word"
          "cfg": { "filter": { "alpha": -1, "numeric": 0 } },
          "handwritten": false,
          "name": "last_name",
          "public_name": "Last Name",
          "semantics": "word"
          "cfg": { "filter": { "alpha": -1, "numeric": -1 } },
          "handwritten": false,
          "name": "passport_number",
          "public_name": "Passport Number",
          "semantics": "word"
          "cfg": { "filter": { "is_integer": -1 } },
          "handwritten": false,
          "name": "control_number",
          "public_name": "Control Number",
          "semantics": "amount"
          "cfg": { "filter": { "alpha": -1, "numeric": -1 } },
          "handwritten": false,
          "name": "visa_type",
          "public_name": "Visa Type",
          "semantics": "word"
      "features_name": [

Or build your data model manually
Using the interface, add up to your data model each field.

In our example, here are the different field configurations we used:

  • First name: type String that never contains numeric characters.
  • Last Name: type String without specifications.
  • Passport Number: type String without specifications.
  • Control Number: type Number without specifications.
  • Visa Type: type String without specifications.
Ready to train modelReady to train model

Ready to train model

Once you’re done setting up your data model, press the Start training your model button at the bottom of the screen.

Train your US Visa OCR

Train your modelTrain your model

Train your model

You’re all set!

Now is the time to train your US Visa deep learning model in the Training section of our API.

In a few hours (minutes if you're fast), you’ll get your first model trained and will be able to use your custom OCR API for parsing US Visa in your application.

To get more information about the training phase, please refer to the Getting Started tutorial. If you have any questions regarding your use case, feel free to reach out on our chat!

Updated 8 months ago


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.