diff --git a/crazy_functional.py b/crazy_functional.py index 884a28e..6bb11b9 100644 --- a/crazy_functional.py +++ b/crazy_functional.py @@ -15,7 +15,6 @@ def get_crazy_functions(): from crazy_functions.解析项目源代码 import 解析一个Rect项目 from crazy_functions.高级功能函数模板 import 高阶功能模板函数 from crazy_functions.代码重写为全英文_多线程 import 全项目切换英文 - from crazy_functions.理解PDF文档内容 import 理解PDF文档内容 function_plugins = { "请解析并解构此项目本身(源码自译解)": { @@ -66,11 +65,7 @@ def get_crazy_functions(): # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效 "Function": HotReload(高阶功能模板函数) }, - "理解PDF文档内容(直接点击按钮,将会弹出文件选择窗口)": { - # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效 - "AsButton": False, # 加入下拉菜单中 - "Function": HotReload(理解PDF文档内容) - }, + } ###################### 第二组插件 ########################### # [第二组插件]: 经过充分测试,但功能上距离达到完美状态还差一点点 @@ -79,6 +74,8 @@ def get_crazy_functions(): from crazy_functions.总结word文档 import 总结word文档 from crazy_functions.批量翻译PDF文档_多线程 import 批量翻译PDF文档 from crazy_functions.谷歌检索小助手 import 谷歌检索小助手 + from crazy_functions.理解PDF文档内容 import 理解PDF文档内容 + from crazy_functions.理解PDF文档内容 import 理解PDF文档内容标准文件输入 function_plugins.update({ "批量翻译PDF文档(多线程)": { @@ -106,6 +103,17 @@ def get_crazy_functions(): "Color": "stop", "Function": HotReload(总结word文档) }, + "理解PDF文档内容(Tk文件选择接口,仅本地)": { + # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效 + "AsButton": False, # 加入下拉菜单中 + "Function": HotReload(理解PDF文档内容) + }, + "理解PDF文档内容(通用接口,读取文件输入区)": { + # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效 + "Color": "stop", + "AsButton": False, # 加入下拉菜单中 + "Function": HotReload(理解PDF文档内容标准文件输入) + }, }) ###################### 第三组插件 ########################### diff --git a/crazy_functions/理解PDF文档内容.py b/crazy_functions/理解PDF文档内容.py index b0b24e3..b40c0e1 100644 --- a/crazy_functions/理解PDF文档内容.py +++ b/crazy_functions/理解PDF文档内容.py @@ -135,3 +135,51 @@ def 理解PDF文档内容(txt, top_p, temperature, chatbot, history, systemPromp # 开始正式执行任务 yield from 解析PDF(txt, top_p, temperature, chatbot, history, systemPromptTxt) + + + +@CatchException +def 理解PDF文档内容标准文件输入(txt, top_p, temperature, chatbot, history, systemPromptTxt, WEB_PORT): + import glob, os + + # 基本信息:功能、贡献者 + chatbot.append([ + "函数插件功能?", + "理解PDF论文内容,并且将结合上下文内容,进行学术解答。函数插件贡献者: Hanzoe。"]) + yield chatbot, history, '正常' + + # 尝试导入依赖,如果缺少依赖,则给出安装建议 + try: + import fitz + except: + report_execption(chatbot, history, + a = f"解析项目: {txt}", + b = f"导入软件依赖失败。使用该模块需要额外依赖,安装方法```pip install --upgrade pymupdf```。") + yield chatbot, history, '正常' + return + + # 清空历史,以免输入溢出 + history = [] + + # 检测输入参数,如没有给定输入参数,直接退出 + if os.path.exists(txt): + project_folder = txt + else: + if txt == "": + txt = '空空如也的输入栏' + report_execption(chatbot, history, + a=f"解析项目: {txt}", b=f"找不到本地项目或无权访问: {txt}") + yield chatbot, history, '正常' + return + + # 搜索需要处理的文件清单 + file_manifest = [f for f in glob.glob(f'{project_folder}/**/*.pdf', recursive=True)] + # 如果没找到任何文件 + if len(file_manifest) == 0: + report_execption(chatbot, history, + a=f"解析项目: {txt}", b=f"找不到任何.tex或.pdf文件: {txt}") + yield chatbot, history, '正常' + return + txt = file_manifest[0] + # 开始正式执行任务 + yield from 解析PDF(txt, top_p, temperature, chatbot, history, systemPromptTxt)