Google Cloud Vision API(gcsSource)是否支持检测PDF内带文字的图片?
Google Cloud Vision API PDF内嵌图片文字识别问题解答
原生能力支持说明
首先明确:Google Cloud Vision API的TEXT_DETECTION、DOCUMENT_TEXT_DETECTION接口原生不支持识别PDF文件内的内嵌图片文字。
当输入配置InputConfig的mimeType设置为application/pdf时,API只会提取PDF自带的可编辑文本层内容,页面中嵌入的栅格图片不会被单独解析,因此会出现图片直接被跳过的情况,这是该接口的原生设计限制。
可行处理方案
- 方案1:提取PDF内嵌图片后单独识别
可先使用pdfplumber、PyMuPDF等PDF处理工具,批量导出PDF每页中的所有内嵌图片,将导出的PNG/JPG格式图片存储到GCS路径后,单独调用Vision API的OCR接口识别图片文字,后续可将识别结果和原PDF文本层的识别结果按页码、位置合并即可。 - 方案2:PDF全页转栅格图后统一识别
如果不需要区分PDF原生文本和图片内文本,可使用pdf2image、Poppler等工具将PDF每一页整体渲染为300DPI以上的高分辨率图片,再将整页图片作为输入调用Vision API的OCR能力,即可一次性识别页面内所有文字,同时保留原页面的排版位置对应关系。 - 方案3:切换使用Google Cloud Document AI通用OCR处理器
如需端到端直接处理PDF含内嵌图片的场景,可替换原有Vision API的调用逻辑,改用Google Cloud Document AI的通用文档OCR处理器,该处理器原生支持解析PDF内的内嵌图片文字,输入配置和原有Vision API的PDF处理逻辑完全兼容,仅需调整调用的接口端点即可。
以下是Python调用Document AI处理PDF的示例代码片段:
from google.cloud import documentai_v1 as documentai # 初始化客户端 client = documentai.DocumentProcessorServiceClient() # 替换为你的项目、区域、处理器ID processor_path = client.processor_path("your_project_id", "us", "your_processor_id") # 配置GCS源 gcs_source = documentai.GcsSource(uri="gs://your_bucket_name/your_file.pdf") input_config = documentai.ProcessRequest.GcsDocument( gcs_source=gcs_source, mime_type="application/pdf" ) # 发起请求(10页以上PDF建议使用异步批量处理接口) request = documentai.ProcessRequest( name=processor_path, gcs_document=input_config ) response = client.process_document(request=request) # 读取识别结果 for page in response.document.pages: print(f"第{page.page_number}页识别内容:{page.layout.text}")
内容的提问来源于stack exchange,提问作者user3779846
相关产品推荐
相关产品推荐

