项目介绍:tr - 文本识别
项目概述
“tr”是一款针对扫描文档的离线文本识别SDK,核心代码采用C++开发,并提供Python接口,适用于Ubuntu 16.04系统。该项目的诞生背景是当时市场上开源OCR项目如chineseocr和tesseract相对较少,因此通过tr的开发来丰富开源OCR的选择。如今,tr已经基本完成其使命,未来的方向更偏向于研究型项目,追求技术的先进性。
核心功能与技术特色
CRNN支持多行文本识别
tr结合了CRNN与Transformer Encoder/Decoder技术,显著提升了对多行文本以及弯曲文本的识别能力。这样无需在标注时框出每一行的边界,减轻了开发与标注的工作量。
带有Transformer的CRNN
tr采用流行的YOLO系列主干网络,并引入轻量级Transformer Encoder结构,提升了模型对上下文的纠错能力。这种设计减少了对大量真实样本的需求,仅需100多个真实样本即可进行有效训练。
多模态文档理解
tr致力于在多模态大模型生态中寻找新的融合点。传统的OCR在文本识别后将结果以JSON、XML等格式输入LLM,但容易丢失图片中的重要信息。tr正在研发的端到端文档理解方案,将图像编码成一维序列,进一步提高对复杂内容的理解能力。
ChatCRNN的应用
tr研发了适用于多位数整数乘法的ChatCRNN模型。通过调整多行CRNN支持文本输入,从而让其在训练上展现出强大的性能。经验证,3位整数乘法精度达到了99.99%以上,可以适用于需要结合大语言模型的场景。
安装与运行
安装方法
用户可以通过以下两种方法安装tr:
-
使用Git克隆并安装:
git clone https://github.com/myhub/tr.git cd ./tr sudo python setup.py install
-
通过pip直接安装:
sudo pip install git+https://github.com/myhub/tr.git@master
示例代码
以下是使用Python接口的简单示例:
import tr
crnn = tr.CRNN()
chars, scores = crnn.run("imgs/line.png")
print("".join(chars))
用户还可以利用tr进行GUI截图识别,需安装PyQt5和PIL。
系统要求
tr需要Python2或Python3版本,并需安装Numpy。项目暂不支持Windows、CentOS 6、ARM系统。如需提升性能,可使用Docker进行GPU部署。
未来展望
未来tr将继续专注于技术研究,探索与大模型的融合,同时优化现有模块提高性能。尤其针对复杂的多模态文档理解,将不断迭代和完善,以期在技术前沿上更进一步。