仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接
大家好,我是Ai学习的老章
经常在外冲浪,看到很多优秀的技术文章,独享不如分享
我会使用DeepSeek-R1+科技类翻译大师prompt翻译出来,大家一起学习
如有翻译偏差,请大家指教。
这为许多应用场景打开了新的大门,尤其是对于PDF文件。将PDF转换为结构化或机器可读的文本一直是一个大问题。如果我们能够将PDF文档转换为结构化数据会怎样?这就是Gemini2. 0发挥作用的地方。
在本教程中,您将学习如何使用Gemini2. 0直接从您的PDF文档中提取结构化信息,如发票号码、日期。
设置环境并创建推理客户端
处理PDF和其他文件
使用Gemini2. 0和Pydantic生成结构化输出
使用Gemini2. 0从PDF中提取结构化数据
第一步是安装google-genaiPythonSDK[ 2]并获取API密钥。如果没有,可以从GoogleAIStudio获取:获取GeminiAPI密钥[ 3]。
有了SDK和API密钥后,您可以创建一个客户端并定义您将要使用的模型,新的Gemini2. 0Flash模型可通过免费套餐[ 4]获得,每天最多1,500次请求(截至2025-02-06)。
注意:如果您想使用VertexAI,请参阅这里[ 5]如何创建客户端
对于这个示例,您有2个PDF样本,一个是基本发票,另一个是带有手写值的表单。
现在您可以使用我们的客户端通过upload方法上传文件。让我们尝试上传其中一个文件。
注意:FileAPI每个项目可存储多达20GB的文件,单个文件的最大大小为2GB。文件将存储48小时。在此期间,您可以使用API密钥访问这些文件,但无法下载。文件上传是免费的。
上传文件后,您可以检查它转换成了多少个令牌。这不仅帮助我们了解您处理的上下文,也有助于跟踪成本。
结构化输出是一个功能,确保Gemini始终生成符合预定义格式的响应,例如JSONSchema。这意味着您对输出有更多的控制权,并且可以更轻松地将其集成到我们的应用程序中,因为可以保证返回一个符合您定义的模式的有效JSON对象。
Gemini2. 0目前支持三种定义JSON架构的方式:
一个单一的Python类型,就像你在typing注释[ 9]中使用的那样。
一个PydanticBaseModel[ 10]
genai. types.Schema[ 11]/PydanticBaseModel[ 12]的字典等价物
让我们来看一个简单的文本示例。
现在,让我们结合FileAPI和结构化输出来从PDF中提取信息。你可以创建一个简单的方法,接受一个本地文件路径和一个pydantic模型,并返回结构化数据给我们。该方法将:
将文件上传到FileAPI
使用GeminiAPI生成结构化响应
将响应转换为Pydantic模型并返回
在我们的示例中,每个PDF都是不同的。因此,您需要为每个PDF定义独特的Pydantic模型以展示Gemini2. 0的性能。如果您有非常相似的PDF并且想要提取相同的信息,可以为它们使用相同的模型。
Invoice. pdf:提取发票号码、日期以及所有列表项的描述、数量和总计金额,并计算总总计金额
handwriting_form. pdf:提取表单编号、计划开始日期以及年初和年末的计划负债
注意:使用Pydantic功能,您可以为模型添加更多上下文以提高其准确性,并对数据进行一些验证。提供全面的描述可以显著提高模型的性能。像instructor[ 13]这样的库可以根据验证错误自动重试,这可能会有很大帮助,但会增加额外的请求次数。
太棒了!模型很好地提取了发票上的信息。
在使用Gemini2. 0进行PDF处理时,请考虑以下几点:
文件大小管理:虽然FileAPI支持大文件,但在上传前优化PDF文件是个好习惯。
令牌限制:在处理大型文档时检查令牌计数,以确保您在模型限制和预算范围内。
结构化输出设计:仔细设计Pydantic模型以捕获所有必要信息,同时保持清晰性,添加描述和示例可以提高模型的性能。
错误处理:为文件上传和处理状态实现稳健的错误处理,包括重试和处理模型返回的错误消息。
Gemini2. 0的多模态能力,结合结构化输出,帮助您处理和从PDF和其他文件中提取信息。这可以消除复杂且痛苦的手动或半自动化数据提取过程。无论是构建发票处理系统、文档分析工具还是任何其他文档为中心的应用程序,您都应该尝试使用Gemini2. 0,因为它免费试用,然后每100万输入标记仅需0. 1美元。
制作不易,如果这篇文章觉得对你有用,可否点个关注。给我个三连击:点赞、转发和在看。若可以再给我加个🌟,谢谢你看我的文章,我们下篇再见!
参考资料
GoogleDeepMind发布了Gemini2. 0:https ://developers. googleblog.com/en/gemini-2-family-expands/
PythonSDK:https ://googleapis. github.io/python-genai/
获取GeminiAPI密钥:https ://aistudio. google.com/app/apikey
免费套餐:https ://ai. google.dev/pricing#2_0flash
这里:https ://googleapis. github.io/python-genai/#create-a-client
upload:https ://googleapis. github.io/python-genai/#upload
delete:https ://googleapis. github.io/python-genai/#delete
typing注释:https ://docs. python.org/3/library/typing. html
BaseModel:https ://docs. pydantic.dev/latest/concepts/models/
genai. types.Schema:https ://googleapis. github.io/python-genai/genai. html#genai. types.Schema
PydanticBaseModel:https ://docs. pydantic.dev/latest/concepts/models/
instructor:https ://python. useinstructor.com/