Examples to compare OCR services: Amazon vs. Google vs. Microsoft
amplenote.com
amplenote.com
I tested it out when it became available to the general public, and included the API call and JSON response for their default and relatively simple example:
https://gist.github.com/dannguyen/1a71c8fb98ddd1df6abdc08bc7...
I tried it against what I consider one of the harder real-world types of scanned tabular data, a Senate personal financial disclosure form [0], and it didn't do great. In fact, I found that it did substantially worse than ABBYY FineReader. Or rather, ABBYY did much better than I would've expected for any software, even managing to read the vertically-oriented column headers accurately [1].
[0] https://gist.github.com/dannguyen/1a71c8fb98ddd1df6abdc08bc7...
[1] https://github.com/dannguyen/abbyy-finereader-ocr-senate#les...
A good example of what I’m talking about are invoices. In my line of work we extract data from thousands of different types of invoices that are the only place to find key data from your services provider (waste & recycling bills, soon other parts of a building’s expenses), and normalize that information.
There is a long-tail of industries that are years away from having an API to transact information…but that information is available on their monthly statements in some sort of crazy table format!
In my experience Amazon Textract has been the best in terms of processing speed, ease of use, and table extraction accuracy. However post processing is almost always needed with any OCR implementation.
Edit: Its important to note that Microsoft and Google don’t even support table extraction in the APIs listed in this article!
fyi that defaulted to indian rupee as default currency for me (UK based & zero indian connections). Weird
Edit: and now it's hopefully clarified in the article itself. :)
In this case, the use is extracting words that can be used in full-text search, so structural extraction isn't a key criteria.
In case someone wants to know more, the former is known as "full page OCR" and the latter as "data capture"/"document processing" (or IDP, intelligent document processing).Full page OCR for machine printed text is considered a solved problem (but not for handwritten text). Data capture is hard to do and involves extracting specific fields from documents.
The first big cloud company going into data capture territory was Amazon with AWS Textract (calling it OCR++). There's also Document Understanding AI (Google) and Azure Form Recognizer in Beta, as mentioned by others in this thread.
The big 3 RPA companies (UiPath, Automation Anywhere, Blue Prism) have also gone into data capture (calling it cognitive or intelligent RPA).
ABBYY (with FlexiCapture) and Kofax (who recently acquired Nuance's imaging division, the 2nd most popular OCR engine after ABBYY's) are the traditional IDP players.
[1] https://source.opennews.org/articles/so-many-ocr-options/
Like where are we with OCR? Last I checked it was CTC magic. Any progress?
It would be interesting to the benchmark from the article repeated with different scaling options (or other preprocessing, depending on platform).
"Can I use Tesseract for handwriting recognition?
You can, but it won’t work very well, as Tesseract is designed for printed text. Look for projects focused on handwriting recognition."
https://github.com/tesseract-ocr/tesseract/wiki/FAQ#can-i-us...
No idea how well it does for structured content like tables.
There seems to be a recent v2 of a javascript port (i.e. Tesseract v4 compiled to wasm), if anyone wants to do OCR in their browser:
(literally just scale it up x2 or x4).
Just to clarify, the input image should be 300dpi.For an overview: https://github.com/handong1587/handong1587.github.io/blob/ma...
You can train models that are good at finding words in images but can have terrible accuracy at perceiving the actual text of the word.
"Finding words in images" is a bit ambiguous. It can mean "word spotting" (intended for retrieval rather than transcription) but also "text segmentation" (part of preprocessing step before OCR).
The tested corpus only contains relatively common words, so this aspect is not tested.
[1] https://www.gettyimages.com/detail/news-photo/ken-griffey-jr...
All OCR services, BTW, have the same threading problem. They work really well for sequential text, but as soon as you start getting into more complicated "marketing" formats, they don't work at all.
They best use of the online OCR services I found was figuring out published dates for news articles that typically don't show up in anything other than images. Even w/ both Azure, AWS, and Google, I still needed a post-capture regex to figure the stuff out. https://drive.google.com/a/bolcer.org/file/d/16vujemgD91Ebuu...
We've got a long ways to go.
I decided I can save a lot of time by using Amazon Textract to extract the tables from the PDF's and convert them to CSV files.
The problem is that while Textract works really well for well defined tabular data it does not work for tables where the rows and columns are implied with white space, instead of lines. When I reached out to aws they confirmed this problem and suggested that I draw the table lines into the PDF and then run textract again on this modified pdf. This felt like a dirty hack so I did not proceed with this suggestion.
Textract is a great tool when it works well, but unfortunately when it doesn't there are no ways to make adjustments in order to improve the results. In the end I managed to complete my project and get a lot better results by using the excellent Camelot Python table extraction library.
This is what Tabula and Camelot call "Stream" and "Lattice" parsing methods.
Whitespace between cells is Stream, demarcated lines is Lattice.
I wonder if they could modify it to release a near 100% accurate OCR service?
(Not a critique of Wolfram technologies here; their services are otherwise amazing).
As you mention, online OCR is when you input the strokes directly on the device vs offline OCR where the input is an image.
Some trivia:
The first version of handwriting recognition engine of the Newton was developed by ParaGraph International (founded by the founder of Evernote). Another version (Print Recognizer) was later developed by Apple.
https://web.archive.org/web/20120324055221/http://www.beanbl...