首页 > 编程问答 >DocumentAI OCR 错误:文档内容无效

DocumentAI OCR 错误:文档内容无效

时间:2024-07-24 03:50:20浏览次数:10  
标签:python pdf google-cloud-platform pymupdf cloud-document-ai

我从工作流程中调用 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 拆分为较小的部分进行处理。

调试步骤和潜在解决方案:

  1. 彻底检查 PDF:
  2. 使用 PDF 验证器: 尝试使用诸如 https://www.pdf-online.com/osa/validate.aspx 之类的在线工具验证 PDF 文件的结构。
  3. 视觉检查: 检查导致问题的页面是否有任何明显的格式问题、奇怪的字符或低质量的扫描内容。

  4. PDF 预处理(除了你尝试过的方法之外):

  5. 栅格化页面: 将页面转换为图像,然后将其转换回 PDF。这可以解决一些格式问题,但也可能会降低 OCR 准确性。可以使用 ImageMagick 之类的库来做到这一点。
  6. 尝试不同的压缩级别: 使用 pymupdf 尝试不同的压缩设置,看看是否有一个特定的设置可以解决问题。
  7. 简化 PDF: 如果可能,请尝试删除不必要的内容(例如图像或复杂的格式),看看是否可以解决问题。

  8. 隔离问题并联系 Google 支持:

  9. 最小化重现问题: 创建一个仅包含导致问题的页面的最小 PDF。这将有助于你隔离问题并将其提供给 Google 支持。
  10. 联系 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

相关文章

  • Python实现简单学生登陆系统
     代码:importhashlibclassStudent:def__init__(self,username,password):#初始化学生对象,存储用户名和加密后的密码self.username=usernameself.password=hashlib.sha256(password.encode()).hexdigest()defcheck_passwo......
  • python猜数字游戏
    好的,下面是一个简单的小游戏代码示例,使用Python编写。这个游戏是一个猜数字游戏,玩家需要猜一个1到100之间的随机数。importrandomdefguess_number_game():print("欢迎来到猜数字游戏!")print("我已经想好了一个1到100之间的数字,请你猜一猜。")secret_num......
  • 【Python正则表达式】:文本解析与模式匹配
    文章目录1.正则表达式2.re模块3.修饰符3.元字符3-1字符匹配元字符3-2重复次数限定元字符3-3字符集合匹配元字符3-4分组元字符3-5边界匹配元字符3-6字符类别匹配元字符4.技巧4-1贪婪与非贪婪5.案例1.正则表达式正则表达式面向什么样的问题?1、判断一个字......
  • 仅需增加2行代码,Python量化策略速度提升20+倍!
    今天分享一个Python量化策略加速的小技巧,不用修改原有代码,只需在原有代码里新增2行,策略执行速度便可能提高20+倍,正文开始~现如今,无论是入门量化投资,还是做数据分析、机器学习和深度学习,Python成为了首选编程语言,直观的原因就是容易上手和资源丰富,但Python有个根深蒂固的标签,......
  • Python基础-Anaconda,Spyder,数据类型
    1、Python与Anaconda在想使用Python之前需先安装Python,以及PythonIDE和Python的库,而用Anaconda就可以一键安装。Anaconda包含了Python,常用的python库以及IDE,还具有强大的环境和python包的管理能力。PythonIDE(IntegratedDevelopmentEnvironment,集成开发环境)是一个为开发......
  • python实现图像特征提取算法2
    python实现广义Hough变换算法、Hough变换算法1.广义Hough变换算法详解算法步骤Python实现详细解释优缺点2.Hough变换算法详解算法步骤Python实现详细解释优缺点实现广义Hough变换算法(GeneralizedHoughTransform)可以用于检测任意形状的......
  • 使用Python自动备份MC服务器存档至轻量COS
    在存档意外炸档时,备份就显得尤为重要。本文以Minecraft1.18.2为例,教你如何使用轻量搭建一个MC服务器,并定时将存档备份入轻量COS,节省本地空间。前期准备一台安装了Linux原版系统的轻量(因为目前轻量COS仅支持挂载Linux系统镜像,不支持容器或自定义镜像)一个和轻量大区相同的轻......
  • python中的数据类型-适合新手-比较完善(写了好久……)
    作者的话        首先,我先申明,以下思路仅为个人理解,如有不同,望指导,谢谢。        数据类型它是什么,有什么用,怎么用就是它的全部内容,知识框架串联起来之后就是这三部分内容,没有什么特别的东西就只是单纯的可以培养这个习惯,之后就可以很轻松的学习使用之后串联......
  • 090、Python 写Excel文件及一些操作(使用xlwt库)
    要写Excel文件,我们需要使用第三方库。xlwt库是一个常用的写Excel的第三方库,它同时支持.xls和.xlsx。要使用第三方库,首选需安装:pipinstallxlwtxlutils安装完成后,我们就可以引入库来进行相关操作了。使用xrwt库写Excel文本,可以按以下步骤操作:1、第一步:创建工作簿(Wor......
  • python每日学习:numpy库的用法(上)
    python每日学习10:numpy库的用法(上)下载numpy库pipinstallnumpy检测环境是否安装importnumpyimportnumpyasnpa=np.arange(10)print(a)array创建数组名称描述dtype数组元素的数据类型,可选copy对象是否需要复制,可选order创建数组的样式,C为行方向,F为列方向,A......