我尝试利用计算机视觉API来对扫描为图像PDF的PDF文件进行OCR。
测试结果告诉我该PDF为“InvalidImageFormat”,“输入数据不是有效的图像”。当我使用PNG文件测试时,它运行得很完美。
是否有办法可以使用API处理PDF图像,或者有没有Azure API可以用于将PDF转换为PNG再转换为文本?
我尝试利用计算机视觉API来对扫描为图像PDF的PDF文件进行OCR。
测试结果告诉我该PDF为“InvalidImageFormat”,“输入数据不是有效的图像”。当我使用PNG文件测试时,它运行得很完美。
是否有办法可以使用API处理PDF图像,或者有没有Azure API可以用于将PDF转换为PNG再转换为文本?
编辑
自从其他附加服务变得可用后,尽管我个人没有尝试过其中的一些,但它们可能适合此目的。
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。
有一个名为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文档链接:
注意:
现在有一个新的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.
它的功能足够好,但目前支持的语言不是很多。
# 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了。
对于PDF和TIFF文件,最多处理2000页(免费版仅处理前两页)。
https://learn.microsoft.com/en-us/azure/cognitive-services/computer-vision/overview-ocr - JinSnow