Azure文档智能银行对账单提取中自动文档拆分的实现问题
Azure文档智能银行对账单提取中自动文档拆分的实现问题
我来帮你搞定这个自动拆分多页银行对账单的问题哈~你遇到的TypeError主要是因为参数传递方式不对,或者SDK版本不匹配导致的,下面给你详细说下正确的解决步骤:
首先,先确保你安装了最新版本的Azure文档智能Python SDK,旧版本可能不支持split_mode参数:
pip install --upgrade azure-ai-documentintelligence
然后修正你的代码,这里有两种正确的实现方式:
方式一:使用最新SDK的split_mode参数(推荐)
在最新版SDK中,begin_analyze_document方法直接支持split_mode参数,同时推荐用analyze_request来传递文件内容(替代你之前的body参数,兼容性更好):
from azure.core.credentials import AzureKeyCredential from azure.ai.documentintelligence import DocumentIntelligenceClient from azure.ai.documentintelligence.models import SplitMode # 先初始化客户端(记得替换成你的服务端点和密钥) document_intelligence_client = DocumentIntelligenceClient( endpoint="你的Azure文档智能服务端点", credential=AzureKeyCredential("你的服务密钥") ) # 读取PDF文件(如果你的file_bytes已经是二进制内容,直接用它替换f即可) with open("你的多页银行对账单.pdf", "rb") as f: poller = document_intelligence_client.begin_analyze_document( model_id="prebuilt-bankStatement.us", analyze_request=f, split_mode=SplitMode.AUTO ) bankstatements = poller.result() # 遍历拆分后的所有对账单 for idx, statement in enumerate(bankstatements.documents): print(f"第 {idx+1} 份银行对账单:") # 这里可以根据需求提取对账单的具体字段,比如账户号、交易记录等 if hasattr(statement, 'fields'): account_num = statement.fields.get('AccountNumber', {}).get('valueString') if account_num: print(f"账户号: {account_num}")
方式二:通过request_options传递拆分模式(兼容旧版SDK)
如果升级SDK后还是有问题,或者你暂时无法升级,可以尝试通过request_options传递拆分配置(注意参数是驼峰命名的splitMode):
poller = document_intelligence_client.begin_analyze_document( model_id="prebuilt-bankStatement.us", analyze_request=file_bytes, request_options={"splitMode": "auto"} ) bankstatements = poller.result()
为什么之前的代码会报错呢?主要是因为你直接把split_mode作为顶级参数传递,但如果SDK版本不支持这个参数,或者参数传递的入口不对,就会触发Session.request() got an unexpected keyword argument 'split_mode'这个错误。按照上面的方式调整后,就能让服务自动拆分PDF中的多份银行对账单啦~
备注:内容来源于stack exchange,提问作者Joshua Pile
相关产品推荐
相关产品推荐

