社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

老刘说NLP • 8 月前 • 533 次点击  

今天是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开源爱好者与践行者,主页:https://liuhuanyong.github.io。

对大模型&知识图谱&RAG&文档理解感兴趣,并对每日早报、老刘说NLP历史线上分享、心得交流等感兴趣的,欢迎加入社区,社区持续纳新。

加入会员方式:关注公众号,在后台菜单栏中点击会员社区->会员入群加入


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/173800
 
533 次点击