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 上传到存储库,但你可以按照存储库中的代码和说明轻松复制实验:

用于测试的论文标题
html 渲染中的 GOT 模型结果

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

汇智网翻译整理,转载请标明出处