OCR-Form-Tools
OCR-Form-Tools 是一款专为微软 Azure Form Recognizer 和 OCR 服务打造的开源标注与测试工具。它主要解决了用户在训练自定义表单识别模型时,缺乏高效、灵活的数据标注及验证环境的痛点。通过该工具,用户可以轻松对 PDF、JPEG 或 TIFF 格式的文档进行可视化标注,利用标注数据训练模型,并即时预测分析单个表单以提取关键键值对,从而形成完整的“标注 - 训练 - 验证”工作流。
这款工具特别适合开发者、数据科学家以及需要处理大量结构化文档的企业技术人员使用。无论是希望深度定制识别逻辑的工程师,还是想要提前体验最新预览功能的研究者,都能从中受益。OCR-Form-Tools 基于 React、Redux 和 TypeScript 构建,不仅支持在浏览器中直接运行,还提供了 Docker 容器化部署方案,甚至能打包为独立的桌面应用程序。其桌面版本额外支持本地文件系统存储和跨域资源请求,为不同网络环境下的用户提供了极大的灵活性。作为微软官方维护的开源项目,它允许用户根据特定需求修改源码,是探索和优化 Azure 表单识别能力的得力助手。
使用场景
某大型物流公司的数据团队需要每天处理数千张格式各异的纸质运单,将其中的发货人、收货人及货物重量等关键信息数字化录入系统。
没有 OCR-Form-Tools 时
- 标注人员只能依靠肉眼在 PDF 或图片上查找坐标,手动编写复杂的 JSON 配置文件来定义关键字段,极易因坐标偏差导致识别失败。
- 缺乏可视化的即时反馈机制,训练模型后必须等待批量任务运行完毕才能发现标注错误,返工成本极高且迭代周期长达数天。
- 面对 JPEG、TIFF 等多种格式的运单扫描件,团队需要自行开发脚本进行格式转换和预处理,增加了额外的维护负担。
- 无法直接在本地对单个新运单进行快速预测验证,开发人员难以判断是模型问题还是标注数据质量问题,排查效率低下。
使用 OCR-Form-Tools 后
- 利用其可视化标注界面,工作人员可直接在上传的运单文件上框选区域并绑定字段,工具自动生成准确的训练数据,彻底告别手工编写字典。
- 支持“标注 - 训练 - 预测”的一站式闭环流程,用户标注后可立即训练模型并单张测试效果,将模型优化迭代周期从数天缩短至小时级。
- 原生支持 PDF、JPEG 和 TIFF 多种主流格式,无需额外编写转换代码,团队可直接导入各类历史扫描档案开始工作。
- 提供桌面版应用支持本地文件系统,开发人员可在离线环境下直接加载新运单进行实时预测分析,快速定位并解决识别异常。
OCR-Form-Tools 通过可视化的全流程操作,将非结构化单据的数字化处理效率提升了数倍,让团队能专注于业务逻辑而非底层数据清洗。
运行环境要求
- Windows
- macOS
- Linux
未说明
未说明

快速开始
表单 OCR 测试工具
帮助我们改进表单识别器。请参与我们的调查!
功能预览
这是一个用于 表单识别器 的开源标注工具,属于表单 OCR 测试工具集 (FOTT) 的一部分。
这是该工具的 MAIN 分支,包含了所有最新功能。由于这只是一个预览版本,因此并非最稳定的版本。
本仓库的目的是让客户能够在使用 Microsoft Forms 和 OCR 服务时测试可用的工具。目前,我们在此提供的第一个工具是标注工具。用户可以提供反馈,并根据自身需求进行定制化修改。Microsoft Azure 表单识别器团队将定期更新源代码。如果您希望贡献代码,请参阅贡献指南部分。
- 如果您想查看我们最新的正式发布版,请访问 Form-Recognizer-Toolkit,或使用 Form Recognizer Studio。
- 如果您想查看该工具的 V2.1 正式发布版,请访问此链接:link。
- 如果您想查看该工具的 V2.0 正式发布版,请访问此链接:link。
FOTT 的标注工具是一个基于 React + Redux 的 Web 应用程序,使用 TypeScript 编写。该项目通过 Create React App 进行初始化。
标注工具当前功能如下:(您可在此观看简短演示 here)
- 支持对 PDF、JPEG 或 TIFF 格式的表单进行标注。
- 可以通过 表单识别器 使用已标注数据训练模型。
- 使用训练好的模型对单个表单进行预测/分析,提取表单中的键值对预测结果。
快速入门
从源码构建并运行
表单标注工具需要 NodeJS (>= 10.x, Dubnium) 和 NPM。
git clone https://github.com/Microsoft/OCR-Form-Tools.git
cd OCR-Form-Tools
yarn install
yarn build
yarn start
使用 Docker 部署此工具
请参阅此处的说明,并访问我们的 Docker Hub 仓库 here 获取最新的容器镜像信息。
latest镜像标签对应 FOTT 的正式发布版本。latest-preview镜像标签对应 FOTT 的预览版本。latest-preview-private镜像标签对应 FOTT 的私有预览版本。
作为 Web 应用运行
使用现代 Web 浏览器,可以直接访问以下地址运行 FOTT:
注意:这些 Web 应用仅用于测试目的。除非是在本地主机上,否则必须使用 HTTPS。
作为桌面应用运行
在完成初始设置后,FOTT 可以作为桌面应用运行。
yarn electron-start
桌面应用程序具有额外的功能,例如:
- 支持将本地文件系统用作存储来源。
- 支持跨域资源请求。
打包为桌面应用发布
FOTT 可以被打包成可分发的桌面应用程序。
yarn release
生成的可分发安装包将保存在克隆仓库的 releases 文件夹中。
使用标注工具
准备输入数据
要完成完整的标注-训练-分析流程,您需要至少六份相同类型的表单。其中五份用于训练模型,一份用于测试模型。您可以将示例文件上传到 Azure 存储账户中的 Blob 存储容器根目录。您可以使用 Azure Storage Explorer 上传数据。对于格式差异较大的高级场景,您可以根据相似的格式将表单组织到不同的子文件夹中。当您准备从某一特定格式的表单中训练模型时,需要在项目设置页面中指定相应的子文件夹。
配置跨域资源共享 (CORS)
在您的存储账户上启用 CORS。在 Azure 门户中选择您的存储账户,然后单击左侧窗格中的 CORS 选项卡。在底部填写以下内容,然后单击顶部的 保存 按钮。
- 允许的来源 = *
- 允许的方法 = [全选]
- 允许的标头 = *
- 暴露的标头 = *
- 最大缓存时间 = 200

创建连接
Form OCR 测试工具是一款“自带数据”(BYOD)应用程序。在此工具中,连接用于配置和管理源(待标记的资产)以及目标(应导出标签的位置)。在 Form OCR 测试工具中,源和目标位于同一位置。最终,它们将共同作为 Form Recognizer 的输入。
连接可以在不同项目之间设置和共享。它们采用可扩展的提供程序模型,因此可以轻松添加新的源/目标提供程序。
目前,此标记工具和 Form Recognizer 均仅支持 Azure Blob 存储。
要创建新连接,请单击左侧导航栏中的 New Connections(插头)图标。
使用以下值填写字段:
- 显示名称 - 连接的显示名称。
- 描述 - 您的项目描述。
- SAS URL - 您的 Azure Blob 存储容器的共享访问签名 (SAS) URL。要获取 SAS URL,请打开 Microsoft Azure 存储资源管理器,右键单击您的容器(注意:不是父级存储节点,也不是 Azure 门户中的 URL),然后选择“获取共享访问签名”。将过期时间设置为您使用该服务之后的某个时间。确保已选中“读取”、“写入”、“删除”和“列出”权限,然后单击“创建”。接着复制 URL 部分的值。其格式应为:https://<存储帐户>.blob.core.windows.net/<容器名称>?<SAS 值>。

创建新项目
在此标记工具中,项目用于存储您的配置和设置。创建一个新项目,并使用以下值填写字段:
- 显示名称 - 项目的显示名称
- 安全令牌 - 某些项目设置可能包含敏感值,例如 API 密钥或其他共享密钥。每个项目都会生成一个安全令牌,可用于加密/解密敏感的项目设置。您可以通过单击左侧导航栏左下角的齿轮图标,在“应用程序设置”中找到安全令牌。
- 源连接 - 您在上一步中创建的、希望用于该项目的 Azure Blob 存储容器连接。
- 文件夹路径 - 可选 - 如果您的源表单位于 Blob 容器的子文件夹中,请在此处指定文件夹名称。
- Form Recognizer 服务 URI - 您的 Form Recognizer 终端节点 URL。其格式应为:https://<您的姓名>.cognitiveservcices.azure.com。
- API 密钥 - 您的 Form Recognizer 订阅密钥。
- 描述 - 可选 - 项目描述。

标记您的表单
当您创建或打开项目时,主标签编辑器窗口会打开。标签编辑器由三部分组成:
- 预览窗格,包含来自源连接的可滚动表单列表。
- 主编辑窗格,允许您通过应用标签来标记文本。
- 标签编辑窗格,允许用户修改、重新排序和删除标签。
识别文本元素和表格
单击左侧窗格上的 对所有文件运行 OCR,以获取每份文档的文本布局信息。标记工具会在每个文本元素周围绘制边界框,并在每个表格的左上角显示一个图标。您可以单击表格的图标以显示该表格的已识别边界。
将标签应用于文本
接下来,您将创建标签并将其应用于您希望模型识别的文本元素。在一份文档中,有许多您希望训练模型提取的键值对,第一步是标记键值对中的值。例如,您在一张表单中看到文本“Charge: 1002.00”,您希望标记该值 (1002.00),以便 AI 模型能够被训练成在类似表单上提取此类信息。
首先,使用标签编辑窗格创建您想要识别的标签,例如“Cost”。
在主编辑器中,单击并拖动以从高亮显示的文本元素中选择一个或多个词。例如,“1002.00”。注意:目前无法选择跨多页的文本。
单击您想要应用的标签,或按下相应的键盘按键(例如,第一个标签按“1”键)。您只能为每个选定的文本元素应用一个标签,且每个标签在每页上只能应用一次。
按照上述步骤标记您的五份表单,然后进入下一步。

指定标签类型和格式
您可以通过标签上下文菜单指定标签类型和格式。类型和格式信息将存储在源位置的 fields.json 文件中。这些信息将在后处理阶段使用,以获得更好的结果。

训练自定义模型
单击左侧窗格上的“训练”图标以打开训练页面。然后单击 训练 按钮开始训练模型。训练过程完成后,您将看到以下信息:
- 模型 ID - 已创建并训练的模型的 ID。每次训练调用都会创建一个具有自己 ID 的新模型。请将此字符串复制到安全位置;如果您希望通过 REST API 进行预测/分析调用,您需要它。
- 平均准确率 - 模型的平均准确率。您可以通过标记更多表单并再次训练以创建新模型来提高模型的准确率。我们建议先标记五份表单,并根据需要再添加更多表单。
- 标签列表,以及每个标签的估计准确率。

训练结束后,请检查 平均准确率 值。如果较低,您应该添加更多输入文档并重复上述步骤。您已经标记过的文档将继续保留在项目索引中。
提示:您也可以通过 REST API 调用来运行训练过程。有关如何操作的信息,请参阅 使用 Python 和标记数据进行训练。
分析表单
单击左侧窗格上的“分析”图标以打开分析页面。上传一份您未在训练过程中使用过的表单文档。然后单击右侧的 分析 按钮,以获取该表单的键值预测/分析结果。工具会突出显示字段及其边界框,并报告每个值的置信度。

提示:您也可以通过 REST 调用运行分析 API。有关如何操作的详细信息,请参阅 使用 Python 标签进行训练。
组合模型
单击左侧窗格中的“组合”图标以打开“组合”页面。FoTT 会按模型 ID 降序排列,以列表形式显示您的第一个模型页面。选择您想要组合成一个模型的多个模型,然后单击 组合 按钮。新模型组合完成后,即可用于分析。

要加载更多模型,请单击列表底部的 加载下一页 按钮。这将按模型 ID 降序加载下一页的模型。
您可以通过单击列表顶部的列标题对当前加载的模型进行排序。仅当前加载的模型会被排序。您需要先加载所有页面的模型,然后再进行排序,才能查看完整的已排序模型列表。
保存项目并在稍后恢复
要在其他时间或在其他浏览器中恢复您的项目,您需要保存项目的安全令牌,并在以后重新输入。
获取项目凭据
转到您的项目设置页面(文档设置图标),记下安全令牌名称。然后转到您的应用程序设置(齿轮图标),该页面会显示当前浏览器实例中的所有安全令牌。找到您的项目安全令牌,将其名称和密钥值复制到安全位置。
恢复项目凭据
当您想恢复项目时,首先需要创建与同一 Blob 存储容器的连接。重复上述步骤以完成此操作。然后,转到应用程序设置页面(齿轮图标),查看您的项目安全令牌是否在那里。如果不在,则添加一个新的安全令牌,并从上一步复制您的令牌名称和密钥。然后单击“保存设置”。
恢复项目
最后,转到主页(房子图标),单击“打开云项目”。然后选择 Blob 存储连接,并选择您的 .proj 文件。由于应用程序拥有安全令牌,它将加载项目的所有设置。
共享项目
FoTT 允许与同样使用该工具并共享项目所在 Azure Blob 存储容器访问权限的人共享项目。要共享项目,请按照以下步骤操作:
发送方:
- 在工具中打开您想要共享的项目。在右上角找到并单击“共享”图标
。
您应该会看到一条消息弹出,说明您的共享字符串已保存到剪贴板。 - 通过任何方便的方式分享剪贴板中的字符串。
接收方:
- 转到“主页”,并单击“打开云项目”。
- 将共享字符串插入弹出窗口中的相应字段。
- 单击“确定”。
键盘快捷键和实用提示
标记工具支持多种键盘快捷键,以提高可访问性,同时有时也能使标记工作更轻松、更快捷。您可以通过单击标题栏右侧的以下图标查看这些快捷键:
![]()
数字键 1 至 0 以及所有字母键都分配给了前 36 个标签。在从高亮显示的文本元素中选择一个或多个单词后,按下这些快捷键即可为所选单词添加标签。
“[” 和 “]” 键可用于将选择移动到上一个或下一个单词。
“<” 和 “>” 键可用于在多页文档中切换到上一页或下一页。
“-”、“+” 和 “/” 键可用于放大、缩小和重置编辑页面的缩放比例。
按住 Alt 键并单击标签名称,用户可以更改标签名称。
要删除某个标签的所有标注——请在文档上选中该标签的所有标注,然后按“删除”键。
合作者
本项目是从 VoTT 项目克隆并修改而来。
贡献
有许多方式可以为 Form OCR 测试工具做出贡献——请查看我们的 贡献指南。
本项目已采用 微软开源行为准则。如需更多信息,请参阅 行为准则常见问题解答 或发送电子邮件至 opencode@microsoft.com,提出任何其他问题或意见。
版本历史
v2.1-ga-hotfix2021/12/03v2.1-ga2021/05/13v2.1.32021/03/15v2.1.22020/12/15v2.1.12020/09/16v2.0-GA2020/06/15常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
