anaksor-ocr
Sokheng · 工具包
这个模型从文档、收据和路牌照片里读取高棉语和英语文字,用一个检测器找文本行,再用识别器读每一行。适合需要在 Python 里做高棉语 OCR 的开发者。
一个分两部分的 n8n 工作流。一部分把 Google Drive 里的 PDF 存进 Qdrant 集合,之后由 webhook 用 OpenAI 模型和最接近的五段来回答关于它的问题。
通过 webhook、用 Qdrant 回答 PDF 报告问题 是一款 n8n 工作流,属于财务类,由 Mindket 上架。可免费获取。当前为第 1 版,最近更新于 。在本页下载,或复制它的 JSON,再导入 n8n 画布。在 n8n 里启用之前,它不会运行。
Webhook 调用
某个程序或脚本向 pdf-question 这个 webhook 发出 POST 时开始运行,请求里有:
一份纯文本的回答,内容来自你存进去的那份 PDF
开始之前要准备好这些。
语言模型
把每一段和每个问题变成向量,并根据最接近的五段写出回答。
需要OpenAI API 密钥
向量库
把 PDF 的各段作为向量存起来,并为每个问题返回最接近的五段。
需要一个 n8n 能访问到的 Qdrant 实例,要有它的地址,需要的话还要 API 密钥
PDF 来源
按文件 ID 下载你指定的那份 PDF。
需要一个 Google 账号,用于 Google Drive OAuth2 凭据,再加 Drive 里的一份 PDF
由 Mindket 于 2026年11月13日检查
这个 n8n 工作流让你就一份 PDF 报告提问,答案通过一个网址返回。第一部分从 Google Drive 下载 PDF,切成若干段,用 OpenAI 把每一段变成向量,再存进一个 Qdrant 集合。第二部分是一个 webhook。你发来一个问题,工作流找出最接近的五段,再由 OpenAI 聊天模型根据它们写出回答。十三个节点完成这些事,旁边还有两张便签。
想对着一份很长的报告提问、又不想从头读到尾的分析师、小型财务团队和搭建者。想弄懂向量库和检索链怎么配合的人也适合。如果你需要同时跨很多份报告作答,就别选它,因为每个问题只搜索一个集合。
| 行业 | 谁在用 | 怎么用 | 例子 |
|---|---|---|---|
| 金融 | 分析师 | 问一份长报告它对风险、成本或前景怎么说 | 一位分析师问年报里点名了哪些风险。 |
| 投资 | 个人投资者 | 在采取行动之前,先核对申报文件里的一个说法 | 一位投资者问一家公司报告了多少现金。 |
| 运营 | 小企业团队 | 在一份很长的制度或合同前面放一个提问框 | 一位经理问供应商合同还要执行多久。 |
| 软件 | 开发者 | 把它当作一个小模型,用来搭自己文件的检索流程 | 一位开发者换掉 PDF,其余保持不变。 |
你需要会一点 n8n:导入文件、添加三个凭据,并用一段 JSON 调用 webhook。文件里没有写设置要多久。
任何能访问 OpenAI、Google Drive 和一个 Qdrant 实例的 n8n 都能运行它。
input 和 company 的表单、机器人或脚本,都可以来提问data 的节点点“下载”会把一个压缩包存到你的下载文件夹,里面有 workflow.json 和 Mindket 写的设置说明。三个账号就够完成所有步骤。
| 需要 | 说明 |
|---|---|
| n8n | n8n Cloud 或你自己的服务器 |
| OpenAI | 一个 API 密钥,两个嵌入节点和聊天模型都要用 |
| 一个账号,用于 Google Drive OAuth2 凭据,再加 Drive 里的一份 PDF | |
| Qdrant | 一个 n8n 能访问到的实例,要有它的地址,需要的话还要 API 密钥 |
workflow.json。Embeddings OpenAI、Embeddings OpenAI1 和 OpenAI Chat Model 里选中它。Google Drive 里选中它。把 YOUR_FILE_ID 换成你那份 PDF 的 ID,也就是它在 Drive 里地址中那一长串。Qdrant Vector Store 和 Qdrant Vector Store1 里选中它。OpenAI Chat Model,选一个当前可用的模型。文件里没有指定,所以 n8n 会填上 gpt-5-mini。OpenAI 的弃用页面(2026 年 11 月 12 日查看)给出它的停用日期是 2026 年 12 月 11 日,并指定 gpt-5.6-terra 作为替代。crowd 的集合。Webhook1 上开始监听测试事件,把问题发到 /webhook-test/pdf-question,或者发布工作流后改用 /webhook/pdf-question。向 webhook 发一段带两个字段的 JSON。input 放你的问题,company 写要搜索的集合名。回复就是纯文本的回答。再把另一份 PDF 存进它自己的集合,换一个 company 的值,就会搜索那一个。
| 要改的 | 在哪里改 |
|---|---|
| 文件 | Google Drive 里的 ID |
| 集合 | Qdrant Vector Store 里的名称,以及你发出的 company 字段 |
| 分段大小 | Recursive Character Text Splitter,3000 个字符,重叠 200 |
| 模型能看到几段 | Vector Store Retriever 里的 topK,是 5 |
| 模型 | OpenAI Chat Model |
你存进一份年报,问它点名了哪些风险。
你发出 {"input": "Which risks does the report name?", "company": "crowd"}。问题变成向量,Qdrant 返回最接近的五段。模型根据它们写出回答,webhook 把这段文字回复出去。任何数字都请对照 PDF 核对,因为模型只看到了五段。
新手:n8n 把工作流画成用线连起来的方框,每个方框是一个节点,只做一件事。向量库把每一段文字存成一串数字,所以一个问题能找到意思最接近的段落。上面那组存 PDF,下面那组作答。上面那组跑一次,下面那组就一直等着。
专家:两个 Qdrant 节点按名称共用一个集合,而 webhook 为每个请求挑选集合。
| 节点 | 做什么 | 要知道的 |
|---|---|---|
Qdrant Vector Store | 1 版,insert 模式,集合 crowd | 集合不存在时它会创建。再运行一次,这些段就会再存进去一遍 |
Qdrant Vector Store1 | 1 版,集合 {{ $json.body.company }},接到 Vector Store Retriever | 集合由调用方挑选,所以任何能调用 webhook 的人,都能搜索那个 Qdrant 实例上的任何集合 |
Retrieval QA Chain | 1 版,查询 {{ $json.body.input }} | 它的输出是 response.text,Respond to Webhook 把它当文本返回 |
Webhook1 | 1.1 版,pdf-question 上的 POST,由一个节点回复 | 它没有登录验证 |
webhook 是开放的,而且由调用方指定集合。
Webhook1 没有登录验证,所以工作流一发布,任何知道它地址的人都能提问,并花掉你的 OpenAI 密钥company 值决定搜索哪个集合,所以请用一个只放你愿意公开内容的 Qdrant 实例,或者自己加一道检查gpt-5-mini,OpenAI 会在 2026 年 12 月 11 日停用它。第 5 步给出了替代模型一个分两部分的 n8n 工作流。第一部分从 Google Drive 读一份 PDF,切成若干段,存进一个 Qdrant 集合。第二部分守在一个 webhook 上等着:你发来一个问题,它找出最接近的五段,交给 OpenAI 聊天模型,再把回答放进回复里发回去。
workflow.json:n8n 导出的工作流,13 个节点,另有 2 张便签。里面没有任何凭据。README.md:这份说明。Mindket 修正了原始副本里几处会让你绊倒的地方:
YOUR_FILE_ID,你换成自己的。pdf-question。input 的字段里,而链读的是 body.input,所以从 Chat 窗口提问会失败。Mindket 去掉了这个触发器。workflow.json。Embeddings OpenAI、Embeddings OpenAI1 和 OpenAI Chat Model 里选中它。Google Drive 里选中它。把 YOUR_FILE_ID 换成你那份 PDF 的 ID,也就是它在 Drive 里地址中那一长串。Qdrant Vector Store 和 Qdrant Vector Store1 里选中它。OpenAI Chat Model,选一个当前可用的模型。文件里没有指定,所以 n8n 会填上 gpt-5-mini。OpenAI 的弃用页面(2026 年 11 月 12 日查看)给出它的停用日期是 2026 年 12 月 11 日,并指定 gpt-5.6-terra 作为替代。crowd 的集合,集合不存在时会被创建。Webhook1 上开始监听测试事件,再发一个问题:curl -X POST https://YOUR-N8N-ADDRESS/webhook-test/pdf-question \
-H "Content-Type: application/json" \
-d '{"input": "What are the main risks this report names?", "company": "crowd"}'
工作流一发布,同样的调用改发到 /webhook/pdf-question。
第一部分在你点 Execute Workflow 时运行:
When clicking "Execute Workflow" 开始运行。Google Drive 下载你设了 ID 的那个文件。Binary to Document 读取 PDF 的二进制字段 data,把它的各页变成文档。Recursive Character Text Splitter 把它们切成 3000 个字符一段,段与段重叠 200 个字符。Embeddings OpenAI 把每一段变成向量,Qdrant Vector Store 把这些向量插入集合 crowd。第二部分在有问题进来时运行:
Webhook1 接收 pdf-question 上的一个 POST,并把回复留着,直到有节点作答。Retrieval QA Chain 从 body.input 读出问题。Qdrant Vector Store1 搜索 body.company 里写的那个集合,由 Embeddings OpenAI1 把问题变成向量。Vector Store Retriever 留下最接近的五段。OpenAI Chat Model 根据这几段写出回答。Respond to Webhook 把回答作为纯文本发回去。Qdrant Vector Store 里的名称,提问时用你发出的 company 字段。两者要保持一致。Recursive Character Text Splitter。Vector Store Retriever 里的 topK,文件里是 5。OpenAI Chat Model。Google Drive 里的 ID。想把几份报告分开保存,就给每份用一个新的集合名。company 字段决定搜索哪个集合,所以一个对不上任何集合的名称,就不可能返回回答。NOTICE.md 617 B README.md 5 KB workflow.json 8 KB
Sokheng · 工具包
这个模型从文档、收据和路牌照片里读取高棉语和英语文字,用一个检测器找文本行,再用识别器读每一行。适合需要在 Python 里做高棉语 OCR 的开发者。
Qwen · 工具包
Qwen2.5-7B-Instruct 的 GGUF 文件,提供八种量化大小,可通过 llama.cpp 在本地聊天。适合想在自己电脑上用 7.6B 强力模型、又不想搭 Python 环境的人。
ACE-Step · 工具包
用 4B 扩散解码器根据文字生成音乐,50 步并带引导控制,音频质量高于基础版。适合拥有 12 GB 或更多显存 GPU 的创作者。
NeoQuasar · 工具包
用一个 4.1M 参数、基于 45 多家交易所数据训练的基础模型来预测金融 K 线序列。适合想用小模型做价格预测实验的量化研究人员和开发者。
一个 n8n 工作流:发票逾期 7、14、30 天时,各发一条希伯来语 WhatsApp 提醒。它每天早上从 Google 表格读出未付款的发票,消息发出后给对应的行做标记。
一个归档发票的 n8n 工作流。它盯着一个 Google Drive 文件夹,把每个新文件交给 LlamaParse 读取,再由 OpenAI 模型取出明细行,Airtable 里得到一条发票记录和每个明细行各一条记录。