ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Surya 文档 OCR 实战:如何用它读懂 90+ 种语言并输出结构化数据

Surya 文档 OCR 实战:如何用它读懂 90+ 种语言并输出结构化数据 Surya 文档 OCR 实战:如何用它读懂 90 种语言并输出结构化数据【免费下载链接】suryaOCR, layout analysis, reading order, table recognition in 90 languages项目地址: https://gitcode.com/GitHub_Trending/su/surya扫描版合同、票据和双语资料堆在桌面,传统 OCR 工具把行业术语读错、表格顺序读乱、混合语言段落直接糊成一团——如果你被这些问题卡住,可以试试 Surya。它是一套轻量级文档 OCR 工具包:650M 参数的视觉语言模型,一次调用同时给出文本识别、版面分析、阅读顺序和表格结构,覆盖 90 多种语言。读完本文,你会做到:用两条命令完成安装并跑通第一次整页 OCR看懂results.json的输出结构,把结果接进自己的流水线按硬件条件选择 vllm 或 llama.cpp 后端,并调出可接受的吞吐在识别效果不佳时,按固定路径排查和调参 先分清架构:一个 VLM 扛三件事,一个独立小模型管检测先看结论:Surya 2 里,版面分析、整页 OCR、表格识别走的是同一个视觉语言模型(Qwen3.5 风格,约 650M 参数);只有文本行检测是独立的小模型。推理服务器首次使用时自动拉起,你不需要手动部署文本行检测是独立的 torch 模型(改造版 EfficientViT),不依赖 VLM 后端,没有 GPU 也能跑数学公式不需要单独识别:公式会以内联math标签形式混在 OCR 输出的 HTML 里,内容是 KaTeX 兼容的 LaTeX功能模型形态推理后端命令行整页 OCR共享 VLMvllm / llama.cppsurya_ocr版面 阅读顺序共享 VLMvllm / llama.cppsurya_layout表格识别共享 VLMvllm / llama.cppsurya_table文本行检测独立 torch 小模型纯 torchsurya_detect安装并跑通第一次整页 OCR普通用户两条命令就能跑起来,输入可以是单张图、PDF 或整个目录:pip install surya-ocr surya_ocr ./sample_docs --output_dir ./results如果你想改源码或看实现,仓库提供基于 uv 的开发安装:克隆仓库(仓库地址 https://gitcode.com/GitHub_Trending/su/surya)后执行uv sync --group dev即可,依赖清单见 pyproject.toml。跑完后结果写入results/results.json,顶层按文件名做键,值是按页排好的列表。看懂输出 JSON:五个字段决定你能做什么每个页面对象里的核心字段如下:字段含义典型用法blocks按阅读顺序排列的文本块直接拼接得到整页正文blocks[].label版面类别(Text、Table、SectionHeader 等)过滤掉页眉页脚、图片块blocks[].html块内容 HTML,公式包在math内直接渲染或转 Markdownblocks[].bbox/polygon块的位置坐标回贴到原图做标注blocks[].confidence块内平均 token 概率(0–1)低置信块转人工复核提示:批量数字化时,把confidence低于阈值(比如 0.7)的块挑出来人工核对,比全量复查省时间得多。⚙️ 按硬件选后端,再调参数提吞吐结论:吞吐主要由推理后端决定,常用开关都是环境变量,默认值定义在 surya/settings.py 中。环境变量默认用途SURYA_INFERENCE_BACKEND自动(GPU 选 vllm)强制指定vllm或llamacppSURYA_INFERENCE_URL自动拉起挂到已有的 OpenAI 兼容服务,省一次启动SURYA_INFERENCE_PARALLEL8客户端并发请求数IMAGE_DPI/IMAGE_DPI_HIGHRES96 / 192粗结构(检测/版面)与精细识别的输入分辨率几条实用经验:连续跑多条命令时加--keep_server,让服务器常驻,避免每次都重新加载模型vllm 侧可提高--max-num-seqs;llama.cpp 侧把--parallel调大并对齐客户端并发DPI 从 192 降到 96 能显著提升吞吐,精度换速度,按业务权衡后端实现放在 surya/inference/,各 CLI 入口在 surya/scripts/,排查启动问题时看这两个目录最快。 识别不准时,按这个顺序排查分辨率:文字太小是首要原因;如果原图已经很大,把宽度降到 2048px 以内再试预处理:旧扫描件先做二值化、纠偏,再进模型检测阈值:DETECTOR_TEXT_THRESHOLD控制文本行是否合并,DETECTOR_BLANK_THRESHOLD控制空隙是否算空白,前者必须大于后者;结合--images输出的调试热图看框有没有粘连或漏检,再决定往哪边调表格:如果输入本身就是裁好的表格,给surya_table加--skip_table_detection,跳过表格定位直接识别--images参数会把带标注的可视化图连同 JSON 一起写出,对照原图逐块检查,比只看文本快很多。多语言与表格:覆盖面比你想的宽官方在 91 种语言的内部基准上整体通过率为 87.2%,其中 38 种语言在 90% 以上。几个有代表性的分数:语言得分语言得分英语92.3%中文82.5%日语86.2%俄语88.8%西班牙语90.7%阿拉伯语72.7%完整 91 语言清单见 static/docs/multilingual.md。经验值:阿拉伯语、越南语这类基准分偏低(70% 出头)的语言,值得在你自己的测试集里单独抽查,别拿英语的分数外推。表格方面,surya_table输出行、列、单元格的几何信息与行/列 ID;开启 full 模式时额外给出完整tableHTML,能处理合并单元格和表头。收尾:四件事记住就够装完先跑surya_ocr,再按results.json里的label、html、confidence三个字段接下游后端由硬件决定:有 NVIDIA GPU 用 vllm,CPU 或 Apple Silicon 用 llama.cpp,自动拉起不用管效果不好先查分辨率和预处理,再动检测阈值,顺序别反多语言场景按官方基准预估下限,低分语言单独建测试集验证建议你先拿十几份自己业务里最难啃的文档跑一遍全流程,把标注图和 JSON 都留档——之后任何一次调参,好坏都有据可查。【免费下载链接】suryaOCR, layout analysis, reading order, table recognition in 90 languages项目地址: https://gitcode.com/GitHub_Trending/su/surya创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表