Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Free Offline OCR 离线的中文文本检测+识别SDK
| Date | Stars |
|---|---|
| 2026-07-24 | 1378 |
| 2026-07-25 | 1378 |
| 2026-07-28 | 1378 |
| 2026-07-30 | 1378 |
| 2026-08-06 | 1378 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# tr - Text Recognition
一款针对扫描文档的离线文本识别SDK,核心代码全部采用C++开发,并提供Python接口
编译环境: *Ubuntu 16.04*
#### 为什么开发tr?
我刚开发tr时,网上只有[chineseocr](https://github.com/chineseocr/chineseocr)、 [tesseract](https://github.com/tesseract-ocr/tesseract)等少数开源OCR。tr发布后,又诞生了几款优秀的开源OCR。tr也基本上完成了自己的使命,会转为一个研究型项目,追求技术的先进性而不是实用性。
#### 暂停维护说明
在研究OCR的过程中,我发现了更有趣的Transformer技术,这是一种有希望单个算法解决绝大部分深度学习任务(包括OCR)的技术。未来的算法工程师可能不再需要学习各种各样的算法,只需要学习一款算法即可。后续我们将暂停维护本项目,重点研究Transformer技术
#### 免责声明
最近看到一些半开源/闭源免费软件被用户投诉举报,甚至追究法律责任的案例,感觉有必要加入免责声明:
+ 本软件存在风险,包括但不限于闪退、内存泄漏,所有风险由用户承担
+ 若在软件使用过程中出现异常导致损失,用户承担全部责任
<!--
-----------------------------------------
#### 端到端文档理解 Document Understanding(研发中)
多模态大模型宛如当年的互联网浪潮一样,汹涌而来,不可逆转。在不远的将来能否更好地融入多模态大模型生态,对OCR算法来说至关重要。<br>
如何更好地融入多模态大模型生态呢?最简单的方法是先用OCR算法识别出文本行的位置和内容,再将结果以JSON、XML等文本格式输入LLM,这种方法有以下缺点:
+ 会不可避免地丢失图片中的一些信息,例如插图、背景图、字体、线框、色彩等等,这些丢失的信息对理解图片内容可能是不可缺少的
+ OCR本身识别错误影响后续文档理解
+ 存在表格、弯曲文本、图表、公式、印章等等OCR难以识别的内容
因此,我认为端到端文档理解是更可行的技术方案。从算法角度而言,就是需要将图片编码成一维序列,使得TransformerDecoder可以像处理文本一样处理图片。
相关研究:
+ [TransformerDecoder](./TransformerDecoder/README.md)
-----------------------------------------
#### 让CRNN支持多行文本的识别 CRNN For Text With Multiple Lines :star:
将CRNN与Transformer Encoder/Decoder相结合,从而使CRNN支持多行文本的识别。标注时不再需要标注文本行的边界框,大大降低标注和开发人员的工作量。适用于弯曲文本等场景。<br>
如果您要识别的图片类似于以下图片,使用现有OCR无法解决时,那么可以试一试多行CRNN。
<div>
<img width="180px" src="crnn_for_text_with_multiple_lines/imgs/test1.png" style="float:left;width:180px;" />
<img width="180px" src="crnn_for_text_with_multiple_lines/imgs/test2.png" style="float:left;width:180px;" />
<img width="180px" src="crnn_for_text_with_multiple_lines/imgs/test3.jpg" style="float:left;width:180px;" />
<img width="180px" src="crnn_for_text_with_multiple_lines/imgs/test4.png" style="float:left;width:180px;" />
<img width="180px" src="crnn_for_text_with_multiple_lines/imgs/test5.jpg" style="float:left;width:180px;" />
<img width="180px" src="crnn_for_text_with_multiple_lines/imgs/test6.png" style="float:left;width:180px;" />
<img width="180px" src="crnn_for_text_with_multiple_lines/imgs/test7.jpg" style="float:left;width:180px;" />
<img width="180px" src="crnn_for_text_with_multiple_lines/imgs/test8.png" style="float:left;width:180px;" />
</div>
<div style="clear:both;"></div><br />
抢鲜体验:
[crnn_for_text_with_multiple_lines](./crnn_for_text_with_multiple_lines/README.md)
#### Let's Continue,多行CRNN适用于Image Recognition任务吗?
如果我们把图像中的物体看成是一个个字符,那么图像识别任务不就是文字识别任务吗?<br>
为了回答这个问题,我在PASCAL VOC数据集上进行了初步的验证,结论是多行CRNN模型不仅可以识别物体的类别,还可以识别物体的个数。不过由于Transformer强大的记忆力,在训练集上比较容易过拟合,需要进行数据增强并提高训练样本数量。<br>
抢鲜体验:
[crnn_for_image_recognition](./crnn_for_image_recognition/README.md)
#### 接下来让我们挑战一个难倒国内外无数大语言模型的任务
最近大语言模型真的好火,如何将CRNN技术应用到LLM呢?首先需要对多行CRNN进行改造以支持文本输入,只需将卷积特征提取层替换成nn.Embedding即可,为了方便区分,对改造后的模型简称为ChatCRNN。<br>
目前行业内发布的大模型对多位数整数乘法表现较差,有很多研究机构在研究如何解决。通过实验我发现3位整数乘法对ChatCRNN而言还算比较容易学习的,单卡训练半小时内可达到99.99%以上精度。<br>
更多技术细节可以参考我的[知乎回答](https://www.zhihu.com/question/605567747/answer/3441552623)
以前我们经常需要单独训练一个语言模型来对OCR识别结果进行纠错,往后没必要那么麻烦了,因为加入多层TransformerEncoder后CRNN模型已经具备了语言模型的能力。
抢鲜体验:
[ChatCRNN](./ChatCRNN/README.md) -->
<!--
-----------------------------------------
#### 带Transformer的CRNN
https://github.com/myhub/tr/tree/master/v2.8
+ 采用当前流行的YOLO系列主干网络
+ 加入轻量级Transformer Encoder结构提升模型根据上下文纠错的能力
+ 降低对真实样本的依赖,训练集仅仅包含100多个真实样本
**Install 安装:**
<pre>
pip install tr==2.8.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
说明: 不同版本的精度有差异,新版本精度不一定更高
旧版本安装:
+ pip install tr==2.8.1
Windows 64位系统安装:
pip install tr==2.8.6 -i https://pypi.org/simple/
</pre>
**Example 代码示例:**
<pre>
import tr
crnn = tr.CRNN() # 初始化文本行识别网络
chars, scores = crnn.run("imgs/line.png") # 识别文本行
print("".join(chars)) # 打印结果
</pre>
**GUI 截图识别**
<pre>
# 需要安装PyQt5,PIL依赖
python -m tr.gui
</pre>
-----------------------------------------
-->
<!--
#### v2.6版本体验
+ 采用当前流行的YOLO系列主干网络
<br>https://github.com/myhub/tr/tree/master/v2.6
-->
<!-- #### 新版本体验v2.7
+ 采用Attention层替代部分LSTM层,进一步加快模型收敛速度
+ 删除部分人工Excerpt of 6,282 characters
Read on GitHub18
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:4d396a85075937dc, topic:ocr, desc:ocr, readme:ocr
matched fp:4d396a85075937dc, topic:transformer