使用Google Cloud Vision进行OCR PDF文件?

4
目前是否有任何服务或软件工具使用Google Cloud Vision作为OCR扫描PDF文件的后端?
如果没有,如何使用Google Cloud Vision将PDF转换为OCRed PDF?据我所知,Cloud Vision目前支持PDF文件,但它只会将识别出的文本作为JSON文件输出。因此,似乎需要在Google Cloud Vision之外的单独步骤中将此转换后的文本放置在PDF图像之上。
背景:
我经常需要将扫描的文档PDF文件转换为包含OCRed文本层的PDF文件。到目前为止,我一直在使用OCRKit或ABBYY FineReader等软件。我测试了这些解决方案与Google Cloud Vision的文本识别能力的准确性,并且后者表现更加出色。

OCR.space的免费版OCR API支持PDF输入,并将其转换为可搜索的PDF。虽然其OCR质量不如Google Cloud Vision,但仍然非常优秀,而且是免费的。 - Fabrice Zaks
3个回答

2
正如其他人所提到的,你需要使用第三方工具来完成这个任务。
首先,使用gcv2hocr将Google Cloud Vision响应JSON转换为HOCR文件:
gcv2hocr test.jpg.json output.hocr

然后使用hocr-tools将hocr数据拼接到pdf文件中。下面的命令将在“imgdir”文件夹中查找具有相同名称的.hocr和.jpg文件,并将它们合并成out.pdf中的页面。
hocr-pdf --savefile out.pdf <imgdir>

0

使用PDF并使用Vision的文档文本检测的解决方案:

gcv2hocr适用于非文档文本检测输出的特定视觉JSON格式。我重构了该代码以创建正确的hocr。

第二个问题是hocr-pdf需要一个jpeg图像而不是pdf作为起点。我重构了hocr-pdf并包含了pdf2image。

image=convert_from_path(imageFilePath)[0]
image_obj=io.BytesIO()
image.save(image_obj,format='jpeg')
image_obj.seek(0)
image_obj=ImageReader(image_obj)
can=Canvas(savefile,pagesize=letter)
width,height=image.size
width *=  (72 / 200)
height *= (72 / 200)
can.setPageSize((width, height))
can.drawImage(image_obj, 0, 0, width=width, height=height)
load_invisible_font()
add_text_layer(can,height)
can.showPage()
can.save()

这比pypdf2方案更好,因为它首先将任何现有的隐藏文本层转换为图像,然后再删除它。


0

这是一个功能请求。如果您希望Google添加它,请投票。 - Joakim

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