调用Google Document AI发票解析API出现TypeError认证错误如何解决
问题根因
该报错由两个核心问题导致:一是google-auth与google-api-core依赖包版本不兼容,二是代码本身存在两处逻辑错误。
解决方案
1. 修复依赖版本不兼容问题
TypeError: with_scopes_if_required() got an unexpected keyword argument 'default_scopes' 是低版本google-auth不支持高版本google-api-core传入的default_scopes参数导致的,执行以下命令升级相关依赖即可:
pip install --upgrade google-auth google-api-core google-cloud-documentai
如果升级后仍存在版本冲突,可以固定使用经过验证的兼容版本:
pip install google-auth==2.22.0 google-api-core==2.11.1 google-cloud-documentai==2.20.0
2. 修正代码逻辑错误
- 调整环境变量设置顺序:你在调用
google.auth.default()之后才设置GOOGLE_APPLICATION_CREDENTIALS环境变量,此时初始化的credentials没有读取到你指定的服务账号文件,需要将环境变量配置移到认证代码之前,修正后开头代码如下:
import os os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = '/home/build/invoice-text-extraction/service_account.json' import google.auth credentials, project = google.auth.default() print(credentials) print(project)
- 修正函数传参错误:你调用
quickstart函数时第一个参数错误传入了PROCESSOR_ID,应该传入你定义的PROJECT_ID,修正后的调用代码为:
quickstart(PROJECT_ID, LOCATION, PROCESSOR_ID, FILE_PATH)
可选优化
如果你配置了环境变量后仍然出现认证问题,可以直接通过服务账号文件加载凭证,不需要调用google.auth.default():
from google.oauth2 import service_account credentials = service_account.Credentials.from_service_account_file( '/home/build/invoice-text-extraction/service_account.json' )
内容的提问来源于stack exchange,提问作者Vlad Tanase
相关产品推荐
相关产品推荐

