Azure 计算机视觉 API - PDF 文件上的 OCR 到文本
Posted
技术标签:
【中文标题】Azure 计算机视觉 API - PDF 文件上的 OCR 到文本【英文标题】:Azure Computer Vision API - OCR to Text on PDF files 【发布时间】:2019-03-04 15:42:35 【问题描述】:我正在尝试利用计算机视觉 API 对作为扫描文档但被视为图像 PDF 的 PDF 文件进行 OCR。
我已经对其进行了测试,它告诉我 PDF 是“InvalidImageFormat”、“输入数据不是有效图像”。当我在 PNG 上测试它时,它工作得很好。
是否有针对 PDF 图像使用 API,或者是否有 Azure API 可以结合使用来执行 PDF > PNG > Text?
【问题讨论】:
【参考方案1】:编辑
由于回答了额外的服务,虽然我没有亲自尝试过其中一些,但它们可能适合这个目的。
https://docs.microsoft.com/en-us/azure/search/cognitive-search-concept-intro
在未来的某个时间点,当它进入 GA 时。 https://aws.amazon.com/textract/
原答案
不幸的是,Azure 的计算机视觉 API 没有 PDF 集成。要使用 Azure 计算机视觉,您需要自己将 pdf 更改为图像(JPG、PNG、BMP、GIF)。
Google 做现在提供 pdf 集成,到目前为止,我已经从测试中看到了一些非常好的结果。
这是通过视觉客户端的 asyncBatchAnnotateFiles 方法完成的(我一直在使用 API 的 NodeJS 变体)
它可以处理多达2000页的文件,结果分为20个页面段并输出到谷歌云存储。
https://cloud.google.com/vision/docs/pdf
【讨论】:
Azure现在好像可以OCR pdf了:For PDF and TIFF files, up to 2000 pages (only first two pages for the free tier) are processed.
docs.microsoft.com/en-us/azure/cognitive-services/…【参考方案2】:
Microsoft Azure 最近提供的最新 OCR 服务称为Recognize Text,其性能明显优于之前的OCR engine。识别文本现在可以与 Read 一起使用,它可以读取和数字化多达 200 页的 PDF 文档。
【讨论】:
确实,好消息!多页 TIFF(即传真)也 识别文本现已被弃用。阅读取代它并增加了相当多的功能:Upgrade guideRead API spec【参考方案3】:有一个名为 Azure 表单识别器(目前为预览版 - 2019 年 11 月)的新认知服务 API,应该可以完成这项工作:
https://azure.microsoft.com/en-gb/services/cognitive-services/form-recognizer/
它可以处理你想要的文件格式:
格式必须是 JPG、PNG 或 PDF(文本或扫描)。嵌入文本的 PDF 最好,因为性格上没有错误的可能性 提取和定位。
https://docs.microsoft.com/en-us/azure/cognitive-services/form-recognizer/overview
这是官方表单识别器 API 文档的链接:
https://westus2.dev.cognitive.microsoft.com/docs/services/form-recognizer-api/operations/AnalyzeWithCustomModel
注意:
表单识别器目前有英文版,还有其他语言版本 可用性不断增长 (4.12.2019) 表单识别器可用于 以下 Azure 区域 (4.12.2019): 加拿大中部、北欧、西欧、英国南部、美国中部、美国东部、美国东部 2、美国中南部、美国西部 https://azure.microsoft.com/en-in/global-infrastructure/services/?products=cognitive-services【讨论】:
PDF 中的一些限制:页数应少于 50 页,没有单选按钮或复选框,并且不支持复杂的表格。【参考方案4】:抱歉,您必须将 PDF 页面分解为图像(JPG 和 PNG)。然后将图像发送到计算机视觉。将其分解也是一个好主意,这样您就不必对所有页面进行 OCR,只需对重要的页面进行 OCR。
【讨论】:
【参考方案5】:有一个新的读取 API 可以处理 PDF https://docs.microsoft.com/en-us/azure/cognitive-services/computer-vision/concept-recognizing-text
Computer Vision’s Read API is Microsoft’s latest OCR technology that extracts
printed text (seven languages), handwritten text (English only), digits, and
currency symbols from images and multi-page PDF documents.
读取 API 参考:https://westcentralus.dev.cognitive.microsoft.com/docs/services/computer-vision-v3-ga/operations/5d986960601faab4bf452005
它工作得很好,但还没有很多语言。
【讨论】:
【参考方案6】:您可以使用 fitz 将 pdf 转换为每个页面的图像。
# import packages
import fitz
import numpy as np
import cv2
#set path to pdf
path2doc = <path to pdf>
#open pdf with fitz
doc = fitz.open(path2doc)
# determine number of pages
pagecount = doc.pageCount
# loop over all pages and convert to image (here jpeg)
for i in range(pagecount):
page = doc[i]
pix = page.getPixmap().getImageData(output='JPEG')
jpg_as_np = np.frombuffer(pix, dtype=np.uint8)
image = cv2.imdecode(jpg_as_np, flags=1)
完成后,您可以将它们发送到 API
【讨论】:
以上是关于Azure 计算机视觉 API - PDF 文件上的 OCR 到文本的主要内容,如果未能解决你的问题,请参考以下文章
Azure 认知服务 计算机视觉API - 读取图片中的文字 (OCR)
用Azure上Cognitive Service的Face API识别人脸