12

I have images of receipts and I want to store the text in the images separately. Is it possible to detect text from images using Amazon Rekognition?

4

5 回答 5

14

2017 年 11 月更新:

Amazon Rekognition 宣布实时人脸识别、图像中的文本识别和改进的人脸检测

在此处阅读公告:https ://aws.amazon.com/about-aws/whats-new/2017/11/amazon-rekognition-announces-real-time-face-recognition-text-in-image-recognition-and -改进的人脸检测/

证明:

在此处输入图像描述

于 2017-11-25T22:22:34.090 回答
6

不,Amazon Rekognition 不提供光学字符识别 (OCR)。

在撰写本文时(2017 年 3 月),它仅提供:

  • 物体和场景检测
  • 面部分析
  • 人脸比较
  • 面部识别

没有提供 OCR 的 AWS 提供的服务。您需要使用第 3 方产品。

于 2017-03-16T23:23:43.133 回答
3

亚马逊不提供 OCR API。您可以使用 Google Cloud Vision API 进行文档文本识别。不过,它的价格为 3.5 美元/1000 张图像。要测试 Google 打开此链接并将下面的代码粘贴到右侧的测试请求正文中。

https://cloud.google.com/vision/docs/reference/rest/v1/images/annotate

{
   "requests": [
     {
       "image": {
         "source": {
           "imageUri": "JPG_PNG_GIF_or_PDF_url"
         }
       },
       "features": [
         {
           "type": "DOCUMENT_TEXT_DETECTION"
         }
       ]
     }
   ]
 }
于 2017-07-28T19:10:08.140 回答
2

尽管目前仅提供有限预览版,但您可能会使用Amazon Textract获得更好的结果。

可以使用适用于Rekognition的AWS JS开发工具包检测图像中的文本,但您的结果可能会有所不同。

/* jshint esversion: 6, node:true, devel: true, undef: true, unused: true */

// Import libs.
const AWS = require('aws-sdk');
const axios = require('axios');

// Grab AWS access keys from Environmental Variables.
const { S3_ACCESS_KEY, S3_SECRET_ACCESS_KEY, S3_REGION } = process.env;

// Configure AWS with credentials.
AWS.config.update({
  accessKeyId: S3_ACCESS_KEY,
  secretAccessKey: S3_SECRET_ACCESS_KEY,
  region: S3_REGION
});

const rekognition = new AWS.Rekognition({
  apiVersion: '2016-06-27'
});

const TEXT_IMAGE_URL = 'https://loremflickr.com/g/320/240/text';

(async url => {

  // Fetch the URL.
  const textDetections = await axios
    .get(url, {
      responseType: 'arraybuffer'
    })

    // Convert to base64 Buffer.
    .then(response => new Buffer(response.data, 'base64'))

    // Pass bytes to SDK
    .then(bytes =>
      rekognition
        .detectText({
          Image: {
            Bytes: bytes
          }
        })
        .promise()
    )
    .catch(error => {
      console.log('[ERROR]', error);
      return false;
    });

  if (!textDetections) return console.log('Failed to find text.');

  // Output the raw response.
  console.log('\n', 'Text Detected:', '\n', textDetections);

  // Output to Detected Text only.
  console.log('\n', 'Found Text:', '\n', textDetections.TextDetections.map(t => t.DetectedText));

})(TEXT_IMAGE_URL);

在此答案中查看更多将 Rekognition 与 NodeJS 结合使用的示例。

于 2019-01-04T17:18:19.297 回答
0
 public async Task<List<string>> IdentifyText(string filename)
        {
            // Using USWest2, not the default region
            AmazonRekognitionClient rekoClient = new AmazonRekognitionClient("Access Key ID", "Secret Access Key", RegionEndpoint.USEast1);            
            Amazon.Rekognition.Model.Image img = new Amazon.Rekognition.Model.Image();
            byte[] data = null;
            using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
            {
                data = new byte[fs.Length];
                fs.Read(data, 0, (int)fs.Length);
            }
            img.Bytes = new MemoryStream(data);   

            DetectTextRequest dfr = new DetectTextRequest();
            dfr.Image = img;
            var outcome = rekoClient.DetectText(dfr);

            return outcome.TextDetections.Select(x=>x.DetectedText).ToList();           
        }
于 2018-02-07T09:01:34.027 回答