大模型是否可用于文档OCR校正?兼看精排Rerankers-python工具库

今天是2024年9月3日,星期二,北京,天气晴,我们来看看两个问题。

一个是Rerankers库统一排序方法,其在RAG中用的较多,封装了许多rerank的模型方法。

另一个是使用利用大模型进行基于上下文的OCR校正的一个可行性研究,这个有些意思。

一、精排Rerankers-python工具库

重排是信息检索流程中的关键组成部分,通常在初步检索到一组候选文档后,使用更强大的模型(通常是神经网络模型)对它们进行重排,以提高检索质量。

最近的工作《rerankers: A Lightweight Python Library to Unify Ranking Methods》(https://arxiv.org/pdf/2408.17344)介绍了一个名为rerankers的轻量级Python库,它旨在统一多种重排(re-ranking)方法。

rerankers库通过提供简单的接口,使得研究人员和实践者能够轻松地探索不同的重排方法,只需更改一行Python代码即可。

也就是说,该工作提供了一个统一的接口,可以加载和使用不同的重排方法。

可以先看看其执行机理,如下:

对应rerank之后的结果例子,如下:

在具体实操上,可以从其githb中(代码地址:https://github.com/answerdotai/rerankers) 看到其所支持的一些调用方式:

from rerankers import Reranker

# Cross-encoder default. You can specify a ‘lang’ parameter to load a multilingual version!
ranker = Reranker(‘cross-encoder’)
# Specific cross-encoder
ranker = Reranker(‘mixedbread-ai/mxbai-rerank-large-v1’, model_type=‘cross-encoder’)
# FlashRank default. You can specify a ‘lang’ parameter to load a multilingual version!
ranker = Reranker(‘flashrank’)
# Specific flashrank model.
ranker = Reranker(‘ce-esci-MiniLM-L12-v2’, model_type=‘flashrank’)
# Default T5 Seq2Seq reranker
ranker = Reranker(“t5”)
# Specific T5 Seq2Seq reranker
ranker = Reranker(“unicamp-dl/InRanker-base”, model_type = “t5”)
# API (Cohere)
ranker = Reranker(“cohere”, lang=‘en’ (or ‘other’), api_key = API_KEY)
# Custom Cohere model? No problem!
ranker = Reranker(“my_model_name”, api_provider = “cohere”, api_key = API_KEY)
# API (Jina)
ranker = Reranker(“jina”, api_key = API_KEY)
# RankGPT4-turbo
ranker = Reranker(“rankgpt”, api_key = API_KEY)
# RankGPT3-turbo
ranker = Reranker(“rankgpt3”, api_key = API_KEY)
# RankGPT with another LLM provider
ranker = Reranker(“MY_LLM_NAME” (check litellm docs), model_type = “rankgpt”, api_key = API_KEY)
# RankLLM with default GPT (GPT-4o)
ranker = Reranker(“rankllm”, api_key = API_KEY)
# RankLLM with specified GPT models
ranker = Reranker(‘gpt-4-turbo’, model_type=“rankllm”, api_key = API_KEY)
# ColBERTv2 reranker
ranker = Reranker(“colbert”)
# LLM Layerwise Reranker
ranker = Reranker(‘llm-layerwise’)
# … Or a non-default colbert model:
ranker = Reranker(model_name_or_path, model_type = “colbert”)

二、 利用大模型进行基于上下文的OCR校正

历史印刷媒体档案的数字化对于提高当代记录的可访问性至关重要。然而,将实体记录转换为数字文本的光学字符识别(OCR)过程容易出错,特别是在报纸和期刊这样布局复杂的文档中。

《CLOCR-C: Context Leveraging OCR Correction with Pre-trained Language Models》(https://arxiv.org/pdf/2408.17428),尝试利用预训练语言模型(LMs)的文本填充和上下文适应能力来提高光学字符识别(OCR)的质量,研究的核心目标是探索语言模型是否能够执行OCR后处理校正,改善下游自然语言处理(NLP)任务。

其想说明的问题也很有趣,有三个:

  • 语言模型能否提高报纸和期刊OCR输出的准确性?
  • 经过CLOCR-C校正后的错误率是否能够改善下游NLP任务?
  • 提供社会文化上下文是否能提高OCR输出的准确性?

先说结论,实验使用了七个LMs对三个数据集进行:19世纪连续出版物版(NCSE)和Overproof收藏中的两个数据集。

结果表明:

  • 一些LMs可以显著降低错误率,表现最好的模型在NCSE数据集上实现了字符错误率超过60%的降低。

  • OCR的改进扩展到了下游任务,例如命名实体识别,余弦命名实体相似度有所提高。

再来看一些实现过程:

1、数据集

研究使用了三个数据集,包括来自英国、澳大利亚和美国的数字化档案报纸。具体数据集如下:

  • 十九世纪连续出版物版(NCSE):这是一个新发布的开源档案,包含六个期刊的数字化扫描和OCR处理结果。这些期刊包括《Monthly Repository and Unitarian Chronicle》、《Northern Star》、《The Leader》、《The English Woman’s Journal》、《The Tomahawk》和《Publisher’s Circular》。

  • Overproof 收藏:包含两个数据集,一个来自澳大利亚的TROVE收藏,另一个来自美国的报纸档案。这些数据集具有高质量的行对齐转录,适合用于评估OCR校正系统。

2、语言模型对比

比较了七种流行的语言模型,包括GPT-4、GPT-3.5、Llama 3、Gemma、Mixtral 8x7b、Claude 3 Opus和Claude 3 Haiku。

这些模型的选择基于它们在大型语言模型公司中的代表性以及通过API的可访问性。

3、实验任务

实验分为三个子部分:

  1. 提示变体和选择过程:使用不同的提示(prompts)来引导语言模型进行OCR校正。提示的设计对于模型性能有显著影响,因此进行了多种提示的测试和优化。

  1. 下游任务评估:研究OCR校正对下游任务(如命名实体识别NER)的影响。使用NER模型来评估校正后文本的质量,采用余弦命名实体相似度(CoNES)作为评估指标,以衡量文本中命名实体的一致性。

  2. 社会文化信息的使用:探讨在提示中提供社会文化上下文对OCR校正性能的影响。通过控制实验来测试不同提示对模型校正能力的影响。

4、评估指标

  • 字符错误率(CER):用于评估模型校正效果的指标,计算原始OCR和模型校正后文本之间的差异。
  • 错误减少百分比(ERP):表示模型校正效果相对于原始OCR的改进程度。
  • 余弦命名实体相似度(CoNES):用于评估OCR校正对下游NER任务的影响,通过比较实体的向量表示来衡量文本间的相似度。

总结

本文主要讲了两个事儿,一个是Rerankers库统一排序方法,其在RAG中用的较多,封装了许多rerank的模型方法。

另一个是使用利用大模型进行基于上下文的OCR校正的一个可行性研究,其中对于任务的设定以及prompt的选择很有趣。

参考文献

1、https://arxiv.org/pdf/2408.17344

2、https://arxiv.org/pdf/2408.17428

来源:公众号 老刘说NLP

资源下载: