我从工作流程中调用 DocumentAI OCR 批处理通常相当成功,但是,我偶尔会收到以下错误:
{
"caughtError": {
"message": "An error occurred during execution of a long-running operation.",
"operation": {
"done": true,
"error": {
"code": 3,
"message": "Failed to process all documents."
},
"metadata": {
"@type": "type.googleapis.com/google.cloud.documentai.v1.BatchProcessMetadata",
"createTime": "2024-07-18T12:43:54.456405Z",
"individualProcessStatuses": [
{
"inputGcsSource": "gs://redacted_bucket_name/redacted.pdf",
"status": {
"code": 3,
"message": "Invalid input document content."
}
}
],
"state": "FAILED",
"updateTime": "2024-07-18T12:44:25.393457Z"
},
"name": "projects/###/locations/us/operations/###"
},
"tags": [
"OperationError"
]
}
我可以通过分解 pdf 以查看哪个页面导致错误,将错误隔离到页面。但是,我无法辨别错误的确切原因是什么,可以通过编程方式修复它。
我可以使用像
pypdf
和
pymupdf
这样的库打开pdf并成功提取文本(如果存在) )。我还尝试使用
pymupdf
使用各种压缩设置来压缩pdf,并且我能够压缩pdf,但这并不能防止错误。在我遇到问题的一份 pdf 上,设置
enableNativePdfParsing
至
false
允许处理 pdf,但这并不能阻止我所看到的所有情况下的错误。
是否有某种方法可以预处理我的 pdf确保 pdf 与 DocumentAI 兼容还是有其他方法可以解决此问题?
当然,让我们来解决一下这个“Invalid input document content” DocumentAI OCR 错误。你所遇到的问题很常见,而且很难解决,因为错误信息本身提供的信息有限。
以下是可能导致此错误的常见原因以及一些可以采取的调试步骤:
1. PDF 文件损坏或格式错误:
-
DocumentAI 可能比
pypdf
或pymupdf
更严格: 即使这些库可以提取文本,PDF 中也可能存在细微的结构问题,这些问题会导致 DocumentAI 出现问题。 - 尝试使用不同的 PDF 生成器或转换器: 如果可以的话,尝试重新生成 PDF 或使用其他可靠的工具将其转换为 PDF/A 等标准格式。
2. PDF 内容问题:
- 复杂格式: 包含复杂表格、图像中嵌入文本或非标准字体使用的 PDF 可能会给 OCR 引擎带来挑战。
- 低分辨率或质量差的扫描件: 难以辨认的文本可能会导致此错误。
3. DocumentAI 特定的问题:
-
enableNativePdfParsing
设置: 你已经提到了这一点。将其设置为false
有时会有所帮助,因为它会强制 DocumentAI 使用其内部 PDF 解析器,但这并非始终是可靠的解决方案。 - 处理资源限制: 对于非常大或复杂的 PDF,DocumentAI 可能在处理方面遇到困难。尝试将 PDF 拆分为较小的部分进行处理。
调试步骤和潜在解决方案:
- 彻底检查 PDF:
- 使用 PDF 验证器: 尝试使用诸如 https://www.pdf-online.com/osa/validate.aspx 之类的在线工具验证 PDF 文件的结构。
-
视觉检查: 检查导致问题的页面是否有任何明显的格式问题、奇怪的字符或低质量的扫描内容。
-
PDF 预处理(除了你尝试过的方法之外):
-
栅格化页面:
将页面转换为图像,然后将其转换回 PDF。这可以解决一些格式问题,但也可能会降低 OCR 准确性。可以使用
ImageMagick
之类的库来做到这一点。 -
尝试不同的压缩级别:
使用
pymupdf
尝试不同的压缩设置,看看是否有一个特定的设置可以解决问题。 -
简化 PDF: 如果可能,请尝试删除不必要的内容(例如图像或复杂的格式),看看是否可以解决问题。
-
隔离问题并联系 Google 支持:
- 最小化重现问题: 创建一个仅包含导致问题的页面的最小 PDF。这将有助于你隔离问题并将其提供给 Google 支持。
- 联系 Google Cloud 支持: 如果其他所有方法都失败,请向 Google Cloud 支持团队提供最小 PDF 和错误详细信息。他们可能能够提供更多见解或帮助诊断问题。
代码示例(栅格化):
import img2pdf
from PIL import Image
def rasterize_pdf(pdf_path, output_path):
image = Image.open(pdf_path)
pdf_bytes = img2pdf.convert(image.filename)
with open(output_path, "wb") as f:
f.write(pdf_bytes)
# 用法:
rasterize_pdf("problem_page.pdf", "rasterized_page.pdf")
请记住,解决此类问题通常需要进行一些试验和错误。详细记录你尝试过的方法以及每个步骤的结果,这将有助于你更快地找出解决方案。
标签:python,pdf,google-cloud-platform,pymupdf,cloud-document-ai From: 78785330