Chandra OCR 实测
我最近花时间将Chandra OCR集成到一个本地运行的文档处理流程中该流程在 NVIDIA A10G GPU 上运行用于扫描复杂表格和公式的手写实验报告。我发现了一些与众不同的东西一个模型不仅输出文本还输出结构化的 HTML包含边界框、布局标签、带有正确colspan和rowspan的表格、行内数学公式和复选框状态。我建立了一个处理扫描实验报告的流程包括合并单元格、手写注释、带有复选框的财务表格以及充满 LaTeX 方程的研究论文。传统的 OCR 工具如 Tesseract、PaddleOCR甚至 Google Vision将文档视为文本的集合。它们读取单词但不理解页面。本文将介绍所有内容Chandra 是什么、它如何工作、如何在自己的 GPU 上安装和运行以及如何从其输出重构干净的 Word 文档。1、什么是 Chandra OCRChandra是由 Datalab 开发的开源 OCR 模型于 2025 年底发布。它基于Qwen3-VL视觉语言模型构建并专门针对文档理解进行了微调。与基于流水线的 OCR 系统不同——后者将页面分割成块然后独立识别每个块中的文本——Chandra 使用全页解码它将整个页面视为视觉上下文一次生成结构化输出。结果是在 olmOCR 基准测试中得分83.1%的模型超过了 GPT-4o69.9%、Gemini Flash 263.8%、Mistral OCR72.0%甚至 dots.ocr79.1%。它目前是开源 OCR 模型中最先进的。输出格式是HTML而不是纯文本或 markdown。这是一个深思熟虑的设计选择HTML 以单一、可解析的表示形式捕获结构表格、列表、标题、行内格式粗体、斜体、上标、数学表达式和布局元数据边界框。关键特性全页布局理解Chandra 一次处理整个页面在多栏布局、侧边栏和复杂的学术论文中保持阅读顺序。带有边界框的 HTML 输出ocr_layout提示返回带有data-bbox和data-label属性的 HTMLdiv元素为您提供页面上每个块的确切位置及其内容。表格重建表格使用colspan和rowspan属性重建处理财务文件、实验报告和发票中的合并单元格这些完全破坏了其他 OCR 工具。手写支持医生笔记、填写的表格、手写作业Chandra 以高精度处理草书和打印体手写。数学和方程行内和块级数学公式呈现为包裹在math标签中的 KaTeX 兼容 LaTeX可直接在 Web 应用程序或进一步处理流程中使用。表单和复选框复选框和单选按钮状态input标签上的checked属性被正确识别实现自动表单处理。支持 40 多种语言多语言文档包括德语、法语、阿拉伯语、中文等都原生支持。两种推理模式HuggingFace本地通过transformers直接加载模型用于开发和测试vLLM 服务器部署为与 OpenAI 兼容的 API 服务器以实现生产吞吐量2、Chandra 可以处理的内容使用ocr_layout提示时Chandra 会标记它检测到的每个块。以下是可用的标签及其代表的内容手写— 医生笔记、填写的表格、作业。Chandra 能够读取草书和混乱的打印体这些会困扰传统的 OCR。表格— 保留结构包括合并单元格colspan/rowspan。适用于财务文件、发票和数据表格。数学— 呈现为 LaTeX 的行内和块级方程。处理教科书、练习册和研究论文。表单— 重建复选框、单选按钮及其值的表单字段。复杂布局— 多栏文档、报纸、带有图形和标题的教科书。每个块都带有[x0, y0, x1, y1]格式的data-bbox属性坐标归一化到范围 [0, 1000]。这使您可以将文本映射回原始页面上的确切位置 — 对于高亮显示、匿名化覆盖层或文档比较很有用。3、分步本地安装指南先决条件Ubuntu 20.04 或类似的 LinuxPython 3.10至少 22GB VRAM 的 NVIDIA GPUA10G、A100、H100用于完整的bfloat16推理CUDA 12.x 驱动程序关于 GPU 内存注意仅 Chandra 模型权重就占用约 16.6GB。在 22GB 的 A10G 上KV 缓存的可用空间有限。以下启动参数专门针对此约束进行了调整。第 1 步创建虚拟环境mkdir ~/CHANDRA-OCR cd ~/CHANDRA-OCR python3 -m venv chandra-ocr source chandra-ocr/bin/activate第 2 步安装 Chandra OCRpip install chandra-ocr对于 PDF 处理支持pip install pdf2image sudo apt-get install -y poppler-utils pip install python-docx beautifulsoup4Flash Attention官方文档建议 HuggingFace 模式使用flash-attn但安装经常在 C 编译期间冻结。跳过它。vLLM 使用自己的优化注意力内核不需要它们。第 3 步安装 vLLMpip install vllm第 4 步启动 vLLM 服务器在 22GB A10G 上使用这些确切的参数。关键约束是--max-model-len 4096模型权重使用 16.6GB只留给 KV 缓存约 5GB。每页 4096 个令牌对于大多数文档来说足够了。如果有足够的 GPU可以增加。--enforce-eager禁用 CUDA 图捕获启动时节省约 2.7GB--max-num-seqs 4限制采样器预热内存--gpu-memory-utilization 0.90为编码器缓存留出空间PYTORCH_ALLOC_CONFexpandable_segments:True \ vllm serve datalab-to/chandra \ --served-model-name chandra \ --port 8009 \ --max-model-len 4096 \ --gpu-memory-utilization 0.90 \ --max-num-seqs 4 \ --enforce-eager \ --dtype bfloat16第一次运行时模型总共约 17.5GB将从 HuggingFace 下载。这需要 5-15 分钟具体取决于您的网络。服务器将准备就绪。第 5 步配置客户端在工作目录中创建一个local.env文件。Chandra 库在启动时从此文件读取VLLM_API_BASEhttp://localhost:8009/v1 VLLM_MODEL_NAMEchandra MAX_OUTPUT_TOKENS3000为什么 MAX_OUTPUT_TOKENS3000使用--max-model-len 4096和每页图像约 500 个输入令牌最大可用输出令牌约为 3500。设置 3000 提供了安全缓冲。第 6 步验证服务器curl http://localhost:8009/health curl http://localhost:8009/v1/models4、在 PDF 上运行 OCR以下是完整的流程脚本用于处理 PDF 并将输出保存为每个文档的单个 HTML 文件import time from pathlib import Path from pdf2image import convert_from_path from chandra.model import InferenceManager from chandra.model.schema import BatchInputItem from html_to_docx import html_string_to_docx PDF_PATH documents/lab_report.pdf OUTPUT_DIR ./output Path(OUTPUT_DIR).mkdir(exist_okTrue) manager InferenceManager(methodvllm) images convert_from_path(PDF_PATH, dpi150) print(fPages: {len(images)}) start time.time() all_pages [] for i, image in enumerate(images): print(fProcessing page {i1}/{len(images)}...) batch [BatchInputItem(imageimage, prompt_typeocr_layout)] result manager.generate(batch)[0] all_pages.append(result.markdown) # Save combined HTML input_stem Path(PDF_PATH).stem html_file Path(OUTPUT_DIR) / f{input_stem}.html html_file.write_text(\n\n.join(all_pages)) # Convert to DOCX docx_path Path(OUTPUT_DIR) / f{input_stem}.docx html_string_to_docx(\n\n.join(all_pages), str(docx_path)) print(fDone in {time.time() - start:.1f}s → {docx_path})点击这里查看完整代码。5、结束语Chandra OCR 代表了开源文档处理能力的一个有意义的转变。通过将 OCR 视为视觉语言任务并输出结构化 HTML 而不是原始文本它为开发人员提供了一个基础这是传统的基于流水线的工具根本无法比拟的 — 准确的表格、保留的布局、行内数学和复选框状态所有这些都在单个模型传递中完成。原文链接Chandra OCR 实测 - 汇智网

相关新闻

你的 IDE 正在成为配角

你的 IDE 正在成为配角

如果你最近在编码时感到有些……被取代了,恭喜你。你没有问题。是这个工作出了问题。 大约在 2025 年底,编码代理不再是周末尝鲜、周一默默卸载的新鲜事物。它们跨越了一个门槛——连贯性、耐力、“真正完成任务”——许多经验丰富的工程师注意到了同样…

2026/7/5 16:13:17 阅读更多 →
典型能量收集系统PMIC配置举例

典型能量收集系统PMIC配置举例

能量收集技术使设备能够利用其周围环境中的环境能量。这可以延长电池寿命,甚至完全省去电池。这对环境有益,因为它减少了废弃物和对原材料的需求;对用户也有利,因为他们减少了寻找和更换电池的时间。一个典型的能量收集系统包括&a…

2026/7/5 17:07:58 阅读更多 →
从技术到价值:2026AI搜索服务商选择新范式深度解析

从技术到价值:2026AI搜索服务商选择新范式深度解析

2026年,生成式AI用户规模突破5.15亿人,普及率达36.5%(易观分析2026年Q1),GEO(生成式引擎优化)已从企业数字化"加分项"蜕变为"必答题"。然而,面对市场中150家GEO…

2026/7/5 17:24:41 阅读更多 →

最新新闻

图论算法之深度遍历岛屿问题

图论算法之深度遍历岛屿问题

200. 岛屿数量 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int numIslands(char[][] grid) {int res 0;for(int r 0; r< grid.length; r){for(int c 0; c<grid[0].length; c){if(grid[r][c] 1){res;dfs(grid, r,c);}}}return res;}//从岛屿位置…

2026/7/6 3:07:59 阅读更多 →
Lemos:动态知识网络新范式

Lemos:动态知识网络新范式

Ima 与 Lemos 在知识组织方式上的本质区别在于&#xff0c;Ima 追求精确、静态、可推理的知识结构&#xff0c;而 Lemos 则致力于构建动态、关联、可生长的智能知识网络。Lemos 的核心优势在于其“AI知识图谱”双引擎驱动的范式&#xff0c;将知识库从被动的存储中心转变为主动…

2026/7/6 3:07:58 阅读更多 →
AI智能伴侣开发实战:从零构建你的专属聊天机器人

AI智能伴侣开发实战:从零构建你的专属聊天机器人

一、引言&#xff1a;当AI走进生活 在2026年的今天&#xff0c;人工智能早已不再是科幻电影中的遥远概念。从ChatGPT到DeepSeek&#xff0c;从Gemini到Qwen&#xff0c;大语言模型正以前所未有的速度改变着我们与计算机交互的方式。然而&#xff0c;对于大多数开发者而言&…

2026/7/6 2:59:57 阅读更多 →
避开 Playwright 常见陷阱,让你的 UI 测试更快更稳

避开 Playwright 常见陷阱,让你的 UI 测试更快更稳

做UI自动化测试的朋友应该都有过这种体验——本地跑得好好的&#xff0c;一上CI就挂&#xff1b;周一全绿&#xff0c;周二莫名其妙红一片&#xff1b;加了sleep能过&#xff0c;不加就报元素找不到。 如果你也遇到过这些情况&#xff0c;别急着怀疑是自己的代码写得不够好。很…

2026/7/6 2:57:57 阅读更多 →
AI Agent Skills:从代码补全到智能开发的效率革命

AI Agent Skills:从代码补全到智能开发的效率革命

&#x1f680; 30款热门AI模型一站整合&#xff0c;DeepSeek/GLM/Qwen 随心用&#xff0c;限时 5 折。 &#x1f449; 点击领海量免费额度 如果你还在用 AI 编程助手只是让它帮你补全代码行&#xff0c;那你可能只发挥了它 10% 的潜力。真正的效率革命&#xff0c;发生在你教…

2026/7/6 2:57:57 阅读更多 →
SONiC 2024 容器化架构解析:10个核心Docker容器如何驱动网络转发

SONiC 2024 容器化架构解析:10个核心Docker容器如何驱动网络转发

SONiC 2024容器化架构深度解析&#xff1a;10个核心容器如何构建下一代云网络1. 现代网络操作系统的容器化革命当微软在2016年首次开源SONiC项目时&#xff0c;很少有人能预料到这个基于Linux的网络操作系统会彻底改变数据中心网络的构建方式。八年后的今天&#xff0c;SONiC已…

2026/7/6 2:55:56 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性&#xff1a;5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域&#xff0c;单元测试是保证代码质量的重要环节。当应用涉及数据库操作时&#xff0c;测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南&#xff1a;用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南&#xff1a;告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况&#xff1a;下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools&#xff1a;5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里&#xff0c;参与了关于混合后量子密码学的讨论&#xff0c;应付端点攻击找茬的人&#xff0c;还参与留言板讨论后&#xff0c;发现“威胁模型”对多数人仍是陌生概念&#xff0c;且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”&#xff1a;我理解的渗透测试到底是什么&#xff1f;每次看到新闻里说某个大公司的数据被“黑”了&#xff0c;或者某个网站被攻击导致服务瘫痪&#xff0c;你是不是和我一样&#xff0c;心里会冒出两个念头&#xff1a;一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻