Instant Text Scanner

Professional text capture as efficient as barcode scanning.

Do you often need to type data in your company's website, and wished it could be as fast as scanning a barcode instead?

Instant Text Scanner uses your iPhone's or iPad's camera to quickly recognize printed text such as reference numbers, dates, IDs, codes, serial numbers, names, email addresses, or anything you choose.

The app does not recognize any text you point the camera at. It looks for the bits of text specified using regular expressions. For example, an 8-digit number would be specified as "\d{8}". This reduces or eliminates confusion when the object you are scanning is covered with words and numbers but you want to capture a particular piece of information.

The app offers several useful predefined scan targets. The html and javascript code of that page is freely available below to jump start the development of your app.

Instant Text Scanner has an integrated web browser. Using it with your own web application requires a monthly subscription (with one week free trial). The subscription lets you load your own web page (the "home URL") when the app starts. In addition, or instead, you can define one scan target that will be passed as a parameter of the "lookup URL", usually a reference or index value.

Once your web app is loaded, a simple Javascript addition makes any text field scannable. The same page can trigger as many different scans as needed (one for serial number, another for date, etc). You have full control on what is input into which field.

Your data is safe: the text you scan only goes to the web site you configured, and nowhere else.

For everyday freeform text scanning, please check out our other app: Text Sniper.

Image recognition, like speech recognition, is not 100% accurate. If you encounter difficulties with some text, please email us a picture at so we can improve the next version. We would also love to hear about what you are building!

Frequently Asked Questions

You may find some answers to your questions here. If not, do not hesitate to contact us using the form below.

Can I scan an entire document?

No, there are other great apps for that. Instant Text Scanner is designed to scan targeted bits of text, such as part numbers, dates, email adresses, etc. But you can scan many different fields in succession.

Will it recognize any kind of text?

Instant Text Scanner can recognize most latin characters.

What are regular expressions?

Regular expressions are a powerful way of describing search patterns. They can say, for example, look for 6 digits, or between 4 and 8 letters, or for a word starting with A, etc. There are many great resources online, for example a library of expressions and an interactive tester. The app includes several pre-defined scan targets of varying complexity.

Why not just scan one line of text?

We recommend narrowing the scope as much as possible to reduce the risk of confusion and errors. If you know you need a 6-digit number, only accept 6 digits. If your part numbers use capital letters and digits, do not allow lower case letters. And so on. The accuracy will be higher and your app will have less validation to do later on.

Can I scan several fields in one shot?

Not at this time. Your web app needs to start the scanner again for each target.

Contact Us

Do you have a question? A complaint? A suggestion?
Please let us know and we will be happy to help!

Predefined Scans

The app offers several useful scan targets such as amounts, email addresses, alphanumeric codes, etc. To help you define your own scan targets and scan-enabled web apps, we provide the html and (very simple) javascript code below. Feel free to use it!
<meta name = "viewport" content = "width = device-width, height = device-height" />
<meta name="format-detection" content="telephone=no">
<link href="styles.css" rel="stylesheet" type="text/css">

<script type="text/javascript" src=""></script>
<script type="text/javascript">
// this function can be called by Instant Text Scanner to insert a scan (specified in callback=)
function insertText(text) {
$("html, body").animate({ scrollTop: 0 }, "slow");
<div id="main_container">
<h2 id="title">Predefined Scans</h2>

<h3>What would you like to scan?</h3>

<textarea id="scanresult" rows="1" cols="30" name="note">scanned text will come here</textarea>
<div id="inner_container">
<a href="glypro://scan?regex=%5Cd%7B4%2C%7D&callback=javascript:insertText('TEXT')">4 digits or more </a>
Example: 12345
Regular Expression: <code>\d{4,}</code>

<a href="glypro://scan?regex=%5BA-Z0-9%5D%7B6%2C%7D&callback=javascript:insertText('TEXT')">6 or more capital letters or digits </a>
Example: ABC123D45EF
RE: <code>[A-Z0-9]{6,}</code>

<a href="glypro://scan?regex=%5Cw%2B&callback=javascript:insertText('TEXT')">One word </a>
Example: Spaghetti
RE: <code>\w+</code>

<a href="glypro://scan?regex=%5Cw%2B%20%5Cw%2B&callback=javascript:insertText('TEXT')">Two words </a>
Example: Meat Balls
RE: <code>\w+ \w+</code>

<a href="glypro://scan?regex=%5Cd%7B1%2C2%7D(%5B%5C-%5C%2F%5C.%20%5D)%5Cd%7B1%2C2%7D%5C1%5Cd%7B2%2C4%7D&callback=javascript:insertText('TEXT')">Date </a>
Example: 09-19-2029
RE: <code>\d{1,2}([\-\/\. ])\d{1,2}\1\d{2,4}</code>

<a href="glypro://scan?regex=%5B%5Cw%5Cd%5D%2B(%3F%3A%5C.%5B%5Cw%5Cd%5D%2B)*%40%5B%5Cw%5Cd%5D%2B(%3F%3A%5C.%5B%5Cw%5Cd%5D%2B)%2B&callback=javascript:insertText('TEXT')">Email address </a>
RE: <code>[\w\d]+(?:\.[\w\d]+)*@[\w\d]+(?:\.[\w\d]+)+</code>

<a href="glypro://scan?regex=(%3F%3A%5Ba-z%5D%7B3%2C6%7D%3A%2F%2F)%3F%5Ba-zA-Z0-9_%5C-%5D%2B(%3F%3A%5C.%5Ba-zA-Z0-9_%5C-%5D%2B)%2B(%2F%5CS*)%3F&callback=javascript:insertText('TEXT')">URL </a>
RE: <code>(?:[a-z]{3,6}://)?[a-zA-Z0-9_\-]+(?:\.[a-zA-Z0-9_\-]+)+(/\S*)?</code>

<a href="glypro://scan?regex=(%3F%3A1%5C-)%3F%5C(%3F%5Cd%7B3%7D%5C)%3F(%5B%5C-%5C.%20%5D)%3F%5Cd%7B3%7D(%5B%5C-%5C.%20%5D)%5Cd%7B4%7D&callback=javascript:insertText('TEXT')">US phone number </a>
Example: 1-800-123-4567
RE: <code>(?:1\-)?\(?\d{3}\)?([\-\. ])?\d{3}([\-\. ])\d{4}</code>

<a href="glypro://scan?regex=%5C%2B%3F(%5Cd%5B%5C.%5C-%20%5D%3F)%7B8%2C14%7D&callback=javascript:insertText('TEXT')">International phone number </a>
Example: +44 1234 567890
RE: <code>\+?(\d[\.\- ]?){8,14}</code>

<a href="glypro://scan?regex=%5Cd%2B(%3F%3A%2C%5Cd%7B3%7D)*(%3F%3A%5C.%5Cd%7B1%2C3%7D)%3F&callback=javascript:insertText('TEXT')">US amount </a>
Example: 1,234,000.50
RE: <code>\d+(?:,\d{3})*(?:\.\d{1,3})?</code>

The HTML and Javascript code of this page is available at:
<a href=""></a>
To help you build your own scanner-enabled apps!