A few months ago I tried using AWS Rekognition to detect text in images. The results were okay for casual use cases but overall the quality was pretty poor (primarily because Rekognition isn’t intended to be used as an OCR product).
A few days ago (May 29), AWS announced the general availability of Textract, an actual OCR product. Out of curiosity, I wanted to run the same image I ran through Rekognition through Textract to compare the difference. While Textract isn’t 100%, it’s a huge improvement over Rekognition (as should be expected since it’s intended for this).
Below is a side-by-side comparison of the results from the two services:
Textract Results | Rekognition Results | ||
DetectedText | Confidence | DetectedText | Confidence |
DANS PUMP AND GO | 98% | DANS PLMP AND GO | 98% |
15238 MAIN ST | 99% | 15238 MAIN ST | 100% |
NEWTOWN | 100% | NEWTOWN | 100% |
CAROLINA 93812 | 96% | CAROLINA 93812 | 97% |
ST-TX: 11089984 | 99% | ST-TX: 11089987 (555) 708-2224 | 98% |
(555) 708-2224 | 100% | ||
2014-02-25 IW424534:9338300 07:09 | 99% | 2014-02-25 TW420534: 34:9338300 07:09 | 94% |
TERMINAL: 509338300 OPER: A | 89% | TERMINAL: 509338300 OPER: A | 99% |
Fuel | 99% | Fuel (G) ($/G) | 99% |
(G) ($/G) | 98% | ||
($) | 95% | ($) | 99% |
Pump 9 | 80% | Pump 9 | 97% |
Premium | 93% | Prem ium 40.000 1.345 53.80* | 98% |
40.000 1.345 53.80* | 98% | ||
Total Owed | 97% | Total Owed 53.80 | 98% |
53.8 | 100% | ||
TOTAL PAID | 100% | TOTAL PAID | 100% |
CREDIT CARD | 100% | CREDIT CARD 53.80 | 99% |
53.8 | 99% | ||
VISA | 100% | VISA *kkkkkkkkkkk4597 | 98% |
$4,444,444,440,597 | 58% | ||
INV. 972821 AUTH. 545633 | 99% | INV. 972821 AUTH. 545633 | 99% |
Purchase | 98% | Purchase | 100% |
S 0010010010 00 127 | 89% | S 0010010010 | 98% |
00 APPROVED – THANK YOU | 92% | ||
– | 94% | ||
IMPORTANT | 100% | ||
– | 95% | ||
Retain This Copy For Your Records | 100% |
As always, here’s my source used for this test:
<?php require '/home/bitnami/vendor/autoload.php'; use Aws\Textract\TextractClient; use Aws\Exception\AwsException; $client = new TextractClient([ 'version' => 'latest', 'region' => 'us-west-2', 'credentials' => [ 'key' => '', //IAM user key 'secret' => '', //IAM user secret ]]); try{ $result = $client->detectDocumentText([ 'Document' => [ 'S3Object' => [ 'Bucket' => 'fkrekognition', 'Name' => 'receipt_preview.jpg' ], ], ]); } catch (AwsException $e){ echo "<pre>Error: $e</pre>"; } echo "<h1>Textract</h1>"; echo "<img src=https://s3-us-west-2.amazonaws.com/fkrekognition/receipt_preview.jpg><br />"; $i=0; echo "<table border=1 cellspacing=0><tr><td>#</td><td>BlockType</td><td>Text</td><td>Confidence</td></tr>"; foreach ($result['Blocks'] as $phrase) { if($phrase['BlockType']=="LINE"){ $i++; echo "<tr><td>$i</td><td>".$phrase['BlockType']."</td><td>".$phrase['Text']."</td><td>".round($phrase['Confidence'])."%</td></tr>"; } } echo "</table>"; echo "<h1>Raw Output</h1><pre>"; print_r($result); echo "</pre>"; ?>