文本圖像信息抽取技術在自動化辦公、建筑工程、教育科研、金融風控、醫療健康等行業領域具有廣泛應用場景。2024年9月,飛槳低代碼開發工具PaddleX中新增文本圖像智能產線PP-ChatOCRv3,充分結合PaddleOCR的文本圖像版面解析能力和文心一言語言理解優勢,實現了高效的文本圖像信息抽取。
近期,飛槳研發團隊對飛槳低代碼開發工具PaddleX中文本圖像智能產線PP-ChatOCRv3進行升級,一方面實現了基于標準OpenAI接口的大語言模型調用,支持不同類型大模型靈活更換,另一方面針對文本圖像信息抽取,豐富了自定義提示詞工程的能力,從而為文本圖像信息抽取注入新動力。
PP-ChatOCRv3 系統流程圖
PP-ChatOCRv3進階使用傳送門
https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-rc/docs/practical_tutorials/document_scene_information_extraction(deepseek)_tutorial.md
本次升級具體特色功能如下:
新模型可快速適配多頁 PDF 文件,高效抽取信息
由于大語言模型的推理時間相對較長,從多頁 PDF 文件中抽取信息往往成本較高。
然而,PP-ChatOCRv3 集成了向量檢索技術,先從 PDF 中篩選出與查詢信息相關的內容,再借助大語言模型進行信息抽取,有效提升了處理效率。同時為了有效節約視覺特征和建立向量庫的時間成本,PP-ChatOCRv3提供了數據緩存加載方法。在完成初次視覺特征和向量庫建立后,后續的信息抽取過程即可基于緩存數據進行,有效的避免了頻繁的視覺推理和建立索引庫過程。
詳細的實現如下:
import os
from paddlex import create_pipelinepipeline = create_pipeline(pipeline="PP-ChatOCRv3-doc",initial_predictor=False)output_dir = "output"
if not os.path.exists(output_dir):os.makedirs(output_dir)
visual_predict_res_path = os.path.join(output_dir, "contract.visual")
vector_res_path = os.path.join(output_dir, "contract.vector")
if not os.path.exists(visual_predict_res_path):visual_predict_res = pipeline.visual_predict(input="contract.pdf",use_doc_orientation_classify=False,use_doc_unwarping=False)visual_info_list = []for res in visual_predict_res:visual_info_list.append(res["visual_info"])vector_info = pipeline.build_vector(visual_info_list, flag_save_bytes_vector=True,retriever_config={"module_name": "retriever","model_name": "embedding-v1","base_url": "https://qianfan.baidubce.com/v2","api_type": "qianfan","api_key": "api_key" # your api_key})pipeline.save_visual_info_list(visual_info_list, visual_predict_res_path)vector_info = pipeline.build_vector(visual_info_list)pipeline.save_vector(vector_info, vector_res_path)
else:visual_info_list = pipeline.load_visual_info_list(visual_predict_res_path)vector_info = pipeline.load_vector(vector_res_path)chat_result = pipeline.chat(key_list=["甲方"],visual_info=visual_info_list,vector_info=vector_info,chat_bot_config={"module_name": "chat_bot","model_name": "ernie-3.5-8k","base_url": "https://qianfan.baidubce.com/v2","api_type": "openai","api_key": "api_key" # your api_key},retriever_config={"module_name": "retriever","model_name": "embedding-v1","base_url": "https://qianfan.baidubce.com/v2","api_type": "qianfan","api_key": "api_key" # your api_key}
)
print(chat_result)
支持自定義提示詞工程,拓展大語言模型的功能邊界
早期進行文本圖像信息抽取時,如從身份證、營業執照中提取信息,通常預先設定好關鍵詞(如姓名、公司名稱等),再查找與之相關的信息。然而,在實際應用中,關鍵信息往往以問題的形式呈現,例如在研報中查詢《哪吒2》的票房數,要回答此類問題就需要對提示詞進行修改。本次升級支持自定義提示詞工程,涵蓋問題描述、提取規則、結果規范以及少樣本學習等方面,可根據實際問題靈活調整,從而拓展大語言模型在信息抽取方面的功能邊界。
一個提示詞修改示例如下:
- text_task_description:對話任務的描述,例如“你現在的任務是根據提供的文本內容回答用戶的問題,并給出你回答問題引用的原文片段”。
- text_rules_str:用戶設置的細節規則,例如“對于問題結果,使用“答案:”標注,對于引用原文片段,使用“引用原文:”標注。問題結果中的日期格式為“YYYY-MM-DD””。
- text_few_shot_demo_text_content:用于少樣本演示的文本內容,例如“當用戶詢問關于“時間”的問題時,返回某年某月某日”,通常設置為空即可。
- text_few_shot_demo_key_value_list:用于少樣本演示的鍵值對列表,例如[{“該規定是何時公布的?”: “2005年2月4日”}, {“該規定是何時施行的?”: “2005年4月1日”}],通常設置為空即可
產出結果:
{'chat_res': {'reasoning_content': ['好的,我現在需要處理用戶的問題。用戶提供的OCR文本是關于《勘察設計注冊工程師管理規定》的內容,問題是要找出該規定是何時公布的。首先,我要仔細閱讀OCR文本,尋找相關的日期信息。\n\n在OCR文本的開頭部分,我看到這樣的文字:“勘察設計注冊工程師管理規定 (2005年2月4日中華人民共和國建設部令第137號公布自2005年4月1日起施行)”。這里有兩個日期,一個是公布的日期,另一個是施行的日期。用戶的問題是詢問公布的日期,所以需要確認哪個對應公布。\n\n根據中文法律法規的常見格式,通常會在標題后的括號內注明公布日期和施行日期,格式為“(日期公布機關公布,自日期起施行)”。這里的結構是“2005年2月4日中華人民共和國建設部令第137號公布自2005年4月1日起施行”,所以前半部分“2005年2月4日”應該是公布的日期,后半部分“2005年4月1日”是施行日期。\n\n接下來,我需要確認用戶的問題是否確實指向公布日期。用戶的問題明確問的是“該規定是何時公布的?”,所以答案應該是2005年2月4日。需要將日期格式轉換為“YYYY-MM-DD”,即“2005-02-04”。\n\n然后,檢查是否有其他可能的日期信息。OCR文本的其他部分主要涉及注冊工程師的管理規定,沒有提到其他日期。因此,可以確定答案正確。\n\n最后,按照用戶的要求,用JSON格式返回結果,問題作為key,答案作為value,并引用對應的原文片段。確保日期格式正確,沒有其他多余內容。\n'], '該規定是何時公布的?': {'答案': '2005-02-04', '引用原文': '勘察設計注冊工程師管理規定 (2005年2月4日中華人民共和國建設部令第137號公布自2005年4月1日起施行)'}}}
精彩課程預告
為了幫助您全面掌握PP-ChatOCRv3的最新技術進展,百度研發團隊精心打造視頻精講課程,深入解讀PP-ChatOCRv3的最新技術方案,并分享其在實際產業中的應用技巧。同時,我們還特別設置了產業場景實戰營,配套詳細教程文檔,將手把手指導您針對具體問題靈活優化自定義提示詞工程能力。機會難得,立即點擊鏈接報名:https://www.wjx.top/vm/wFZcC0n.aspx?udsid=749768