Microsoft Computer Vision OCR Read API 按 S3 交易而不是 S2 收费

Microsoft Computer Vision OCR Read API charged as S3 transaction instead of S2

我正在使用 Microsoft Computer Vision API 进行 OCR 处理,我注意到他们在我的账单中作为 S3 交易而不是 S2 被收取费用。

我正在使用 .NET SDK,我正在使用的 API 就是这个。 https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.cognitiveservices.vision.computervision.computervisionclientextensions.readasync?view=azure-dotnet

我也确认了 SDK 调用的实际 REST API 如下 POST /vision/v3.2/read/analyze https://centraluseuap.dev.cognitive.microsoft.com/docs/services/computer-vision-v3-2/operations/5d986960601faab4bf452005

根据文档,这应该是 OCR 读取 API,我说得对吗? https://docs.microsoft.com/en-us/azure/cognitive-services/computer-vision/vision-api-how-to-topics/call-read-api

我很困惑为什么我的通话收费是 S3 而不是 S2。这对我很重要,因为 S3 比 S2 贵 50%。使用定价计算器,1000 笔 S2 交易为 1 美元,而 1000 笔 S3 交易为 1.5 美元。 https://azure.microsoft.com/en-us/pricing/calculator/?service=cognitive-services

OCR 和“描述和识别文本”到底有什么区别? OCR(光学字符识别)根据定义必须识别文本。我在没有任何可选参数的情况下调用 Read API,所以我没有要求“描述”,因此调用应该是 S2 功能而不是我认为的 S3 功能。

我已经在 Microsoft 问答中发布了这个问题,但我认为 SO 可能会获得更多流量,从而帮助我更快地获得答案。 https://docs.microsoft.com/en-us/answers/questions/689767/computer-vision-api-charged-as-s3-transaction-inst.html

为了帮助您理解,您需要了解一下这些服务的历史。计算机视觉 API(以及所有“调用”SDK,无论是 C#/.Net、Java、Python 等使用这些 API 的)都经常移动,有时很难了解哪个 SDK 调用哪个版本的 APIs.

API 操作历史

关于光学字符读取操作,有过几种操作:

计算机视觉 1.0

参见定义 here 包含:

  • OCR操作,识别打印文本的同步操作
  • Recognize Handwritten Text操作,手写文本异步操作(完成后附有“获取手写文本操作结果”操作收集结果)

计算机视觉 2.0

参见定义 here。 OCR 仍然存在,但“识别手写文本”已更改。所以有:

  • OCR操作,识别打印文本的同步操作
  • Recognize Text 操作,异步(+ Get Recognize Text Operation Result 以收集结果),接受打印或手写文本(参见 mode 输入参数)
  • Batch Read File 操作,异步(+“获取读取操作结果”以收集结果),它也在处理 PDF 文件,而另一个只接受图像。它旨在“用于文本较多的文档”

Computer Vision 2.1 在操作方面类似。

计算机视觉 3.0

参见定义 here。 主要变化:Recognize TextBatch Read File 被“统一”为 Read 操作,并改进了模型。例如,不再需要指定手写/打印(参见 link)。

The Read API is optimized for text-heavy images and multi-page, mixed language, and mixed type (print – seven languages and handwritten – English only) documents

所以有:

  • OCR操作,识别打印文本的同步操作
  • Read 操作,异步(+ 获取读取结果以收集结果),接受打印或手写文本、图像和 PDF 输入。

计算机视觉 v3.1-preview.1、v3.1-preview.2、v3.1、v3.2-preview.1、v3.2-preview.2、v3.2-preview 相同.3

SDK

所有实现 Read 方法的 SDK 的最新版本都调用此 3.x。手术。请参阅更新日志,例如 .Net SDK here:

SDK 的

v7.0.x“支持 v3.2 认知服务计算机视觉 API 端点。”

结论

Read 向您收取 S3 费用是正常的。但是计算器具有误导性,因为应将“识别文本”一词更改为“阅读”。

如果您真的想使用OCR操作,请使用SDK中的RecognizePrintedTextAsync method

OCR 是一种旧模型,仅用于打印文本。读取操作是最新模型。 我还可以确认(基于我所做的一些测试)性能低于读取操作。如果你想快速测试,你可以在 this website: it is an open-source portal created by another Microsoft MVP, where I also contributed. You will be able to see both results of OCR and Read operations. It is currently using 6.0.0 SDK version of Computer Vision (see source).

上使用你的密钥

样本: 光学识别结果: 读取结果: