Azure计算机视觉API-对PDF文件进行OCR转换成文本

11

我尝试利用计算机视觉API来对扫描为图像PDF的PDF文件进行OCR。

测试结果告诉我该PDF为“InvalidImageFormat”,“输入数据不是有效的图像”。当我使用PNG文件测试时,它运行得很完美。

是否有办法可以使用API处理PDF图像,或者有没有Azure API可以用于将PDF转换为PNG再转换为文本?

6个回答

8

编辑

自从其他附加服务变得可用后,尽管我个人没有尝试过其中的一些,但它们可能适合此目的。

https://learn.microsoft.com/en-us/azure/search/cognitive-search-concept-intro

在未来某个时刻,当它正式发布时,可以考虑使用以下服务:https://aws.amazon.com/textract/

原回答

不幸的是,Azure的计算机视觉API没有PDF集成。要使用Azure计算机视觉,您需要自己将PDF更改为图像(JPG、PNG、BMP、GIF)。

Google现在提供了PDF集成,从我的测试中,我已经看到了一些非常好的结果。

这是通过vision Client的asyncBatchAnnotateFiles方法完成的(我一直在使用API的NodeJS变体)。

它可以处理多达2000页的文件,结果分为20页段并输出到Google Cloud Storage。

https://cloud.google.com/vision/docs/pdf


1
看起来Azure现在可以OCR pdf了:对于PDF和TIFF文件,最多处理2000页(免费版仅处理前两页)。 https://learn.microsoft.com/en-us/azure/cognitive-services/computer-vision/overview-ocr - JinSnow

8
最近由微软Azure提供的最新OCR服务叫做Recognize Text,它比以前的OCR引擎表现更出色。现在可以将Recognize Text与Read一起使用,后者可以读取并数字化长达200页的PDF文档。

太棒了!多页TIFF文件(即传真)也可以。 - jtlz2
1
“Recognize Text”现已被弃用。 “Read”取代了它并添加了相当多的功能:升级指南 Read API规范 - rustyDog

4

有一个名为Azure Form Recognizer的新认知服务API(目前在预览版 - 2019年11月)可用,应该可以完成工作:

https://azure.microsoft.com/zh-cn/services/cognitive-services/form-recognizer/

它可以处理您需要的文件格式:

格式必须为JPG、PNG或PDF(文本或扫描)。 文本嵌入式PDF最佳,因为没有字符提取和定位方面的错误可能性。

https://learn.microsoft.com/zh-cn/azure/cognitive-services/form-recognizer/overview

这是官方Form Recognizer API文档链接:

https://westus2.dev.cognitive.microsoft.com/docs/services/form-recognizer-api/operations/AnalyzeWithCustomModel

注意:


PDF的一些限制:页面数量应少于50页,没有单选按钮或复选框,并且不支持复杂表格。 - AmbiBala

2
抱歉,您需要将PDF页面转换为图像(JPG和PNG格式),然后发送到计算机视觉系统中。最好将其分解,这样您就不必对所有页面进行OCR识别,只需对重要页面进行即可。

1

现在有一个新的Read API可以处理PDF文件。 https://learn.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

它的功能足够好,但目前支持的语言不是很多。


0
你可以使用 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了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接