GOT-OCR-2.0 通用字符识别
在光学字符识别 (OCR) 领域,传统系统 (OCR-1.0) 难以满足日益增长的智能处理需求。随着输入数据的多样性和复杂性不断增加,从纯文本到更复杂的信号(如数学公式、表格甚至几何形状),显然需要一种更统一、更复杂的方法。
这就是GOT (通用 OCR 理论) 模型的用武之地。在这篇文章中,我们将探讨 OCR-2.0 背后的理论,介绍 GOT OCR 2.0 模型,并引导你如何使用我的 GitHub 存储库开始使用它。
1、对 OCR-2.0 的需求
OCR-1.0 系统虽然仍可运行,但并非为处理现代应用程序所需的输入和输出多样性而构建。对 OCR 的期望不再局限于从扫描文档中提取文本。当今的应用程序要求 OCR 能够处理:
- 纯文本
- 数学公式
- 表格和图表
- 乐谱
- 几何形状
OCR-1.0 系统通常比较死板,只能很好地处理特定任务。向 OCR-2.0 的演进代表着一种范式转变,即向能够处理各种光学字符的模型转变。
2、GOT 模型:统一的端到端解决方案
GOT (General OCR Theory)模型代表着 OCR 技术的重大飞跃。它拥有 5.8 亿个参数,是一个大型、统一、端到端的解决方案,旨在一个框架内处理各种 OCR 任务。其一些主要功能包括:
- 高压缩编码器和长上下文解码器,可实现高效处理。
- 能够处理各种输入,例如:
- 场景图像
- 文档样式图像
- 整页和切片输入
- 支持多种格式的输出,包括纯文本、markdown、TikZ 和 SMILES。
- 交互式 OCR 功能,例如由坐标或颜色引导的区域级识别。
- 动态分辨率和多页 OCR 功能可增强可用性。
GOT 模型用途广泛,支持各种输入类型并生成结构化输出,非常适合复杂的 OCR 任务。
3、开始使用 GOT
为了帮助你深入了解下一代 OCR 技术,我创建了一个 GitHub 存储库,演示如何实现和测试 GOT 模型。以下是你将在存储库中找到的内容以及如何开始:
3.1 加载模型
可以使用 Hugging Face 的 transformers
包轻松导入模型,这简化了加载和与 GOT 模型交互的过程。
from transformers import AutoModel, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('ucaslcl/GOT-OCR2_0', trust_remote_code=True)
model = AutoModel.from_pretrained('ucaslcl/GOT-OCR2_0', trust_remote_code=True, low_cpu_mem_usage=True, device_map='cuda', use_safetensors=True, pad_token_id=tokenizer.eos_token_id)
model = model.eval().cuda()
3.2 在数字 PDF 上测试
我在两种类型的数字 PDF 上测试了该模型。为了将 PDF 转换为图像,我使用了 PDF2Image 包:
# read pdf as images and save
images = convert_from_path("test_pdf_ocr/sample_file.pdf")
images_paths = []
for i in range(len(images)):
images_paths.append(f"test_pdf_ocr/image-{i}.jpg")
cv2.imwrite(images_paths[-1],np.array(images[i]))
医学示例 — 包含表格的文档,用于查看 GOT 处理结构化数据的能力。
科学论文 — 一种用于评估其如何处理文本信息的论文格式。
# read each image and read with ocr model
for path in images_paths:
a = dt.now()
res = model.chat(tokenizer, path, ocr_type='format', render=True, save_render_file = path.replace('.jpg','.html'))
b = dt.now()
with open(path.replace(".jpg",f"_{round((b-a).total_seconds(),2)}.txt"),"w") as f:
f.write(res)
我使用开发人员提到的 ocr_type 格式,以便在格式化文件上获得更好的结果,就像你在医学结果或论文中看到的那样。
在这次初步测试中,我专注于每份文件的第一页。结果证明了 GOT 能够处理复杂表格和连续文本。
3.3 输出注意事项
到目前为止,我还没有将任何 PDF 上传到存储库,但你可以按照存储库中的代码和说明轻松复制实验:
4、我对 GOT 模型的印象
在测试 GOT 后,我可以自信地说,它是 OCR 任务的出色开箱即用解决方案。以下是我的想法:
- 易用性:GOT 模型非常用户友好,尤其是与 Tesseract 等其他 OCR 工具相比。只需进行最少的设置,你就可以高效运行它,这使其成为开发人员和研究人员的理想选择。
- 多功能性:该模型处理多种格式(markdown、TikZ、SMILES 等)的能力令人印象深刻。它为处理从学术论文到科学图表等不同领域的 OCR 开辟了新的可能性。
- 结果质量:在我的测试中,GOT 模型产生了更好的比传统 OCR 工具的结果更好。它在准确性方面表现出色,尤其是表格等结构化数据。
- 挑战:虽然 GOT 模型总体表现良好,但也存在一些挑战。例如,在纸质测试的脚注中,处理非常小的文本时存在轻微问题。虽然这是一个小缺点,但我相信随着更多改进,该模型会随着时间的推移而改进。
5、结束语
GOT 模型标志着 OCR 技术向前迈出了重要一步。凭借其统一的端到端设计,它能够处理现代 OCR 任务复杂多样的需求。无论你处理的是纯文本、数学公式还是更复杂的图形数据,GOT 模型都能满足你的需求。
我相信这个模型将成为我未来所有 OCR 项目工作流程中的关键工具。对于那些希望探索下一代 OCR 技术的人,我强烈建议你尝试一下 GOT。
原文链接:Introducing GOT: The Unified Model Revolutionizing OCR-2.0
汇智网翻译整理,转载请标明出处