Amazon Rekognition用于文本检测

时间:2017-03-16 18:45:34

标签: amazon-web-services amazon-rekognition

我有收据的图像,我想分别将图像存储在图像中。是否可以使用Amazon Rekognition检测图像中的文本?

6 个答案:

答案 0 :(得分:12)

2017年11月更新:

  

Amazon Rekognition宣布实时人脸识别,Text in Image   识别和改进人脸检测

在此处阅读公告:https://aws.amazon.com/about-aws/whats-new/2017/11/amazon-rekognition-announces-real-time-face-recognition-text-in-image-recognition-and-improved-face-detection/

证明:

enter image description here

答案 1 :(得分:6)

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

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

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

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

答案 2 :(得分: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"
         }
       ]
     }
   ]
 }

答案 3 :(得分:1)

Amazon Rekognition没有提供OCR功能(但是?)。

最接近的替代方案是Google Cloud vision OCRfree OCR.space online OCR。两者都以JSON格式返回ocr#ed文本。

以下博客文章提供了亚马逊和谷歌在该领域的产品之间的良好评论:

http://cloudacademy.com/blog/google-vision-vs-amazon-rekognition/

答案 4 :(得分:1)

尽管Amazon Textract当前仅在有限的预览中可用,但您可能会获得更好的结果。

可以使用text in an imageAWS JS SDK来检测Rekognition,但结果可能会有所不同。

/* 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);

在此answer中查看将Rekognition与NodeJS一起使用的更多示例。

答案 5 :(得分: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();           
        }