大家好,今天给大家分享一款功能强大的开源光学字符识别(OCR)工具Surya OCR
,它基于先进的深度学习技术,提供了高效的字符识别能力,并支持多种语言的文本检测与识别。
项目介绍
核心功能
1.多语言支持
Surya OCR支持包括中文、英文、日文、韩文、阿拉伯文等在内的90多种语言的字符识别,能够满足全球用户的需求。
2.高效识别
得益于深度学习算法,Surya OCR在处理复杂文本图像时具有较高的识别率,能够准确识别手写体、印刷体、混合体等多种文本形式。
3.布局分析
除了文本识别,Surya OCR还能进行文档布局分析,识别表格、图片、标题等元素,帮助用户更好地理解文档结构。
4.表格识别
Surya OCR特别强化了表格识别功能,能够清晰地识别出表格中的行、列和单元格,以及具体的字符内容,对于处理大量表格数据的用户来说是一大福音。
5.读取顺序检测
具备读取顺序检测功能,可按照正确的阅读顺序提取文本,确保识别出的文本在逻辑上的正确性,对于多栏排版或非标准排版的文档处理尤为重要。
工作原理
Surya OCR 的工作流程主要包括以下几个步骤:
-
1.图像预处理: 对输入的图像进行预处理,如去噪、二值化、倾斜校正等,以提高识别准确率。
-
2.文本检测: 利用深度学习模型检测出图像中的文本区域,并确定每个文本行的位置。
-
3.特征提取: 从检测出的文本区域提取特征,如颜色、形状、纹理等。
-
4.字符识别: 将提取的特征输入到字符识别模型中,得到最终的识别结果。
-
5.后处理: 对识别结果进行后处理,如纠错、格式化等。
使用方式:
1.易于使用的接口
提供了简洁明了的 API 接口,开发者可以轻松地将其集成到各类应用中,方便进行二次开发和定制化。无论是简单的文本识别应用,还是复杂的文档处理系统,都能快速接入 Surya OCR 的功能。
2.多种部署方式
提供了命令行指令版和 Python 接口版等多种部署方式,用户可以根据自己的需求和使用场景选择合适的部署方式。例如,对于简单的一次性识别任务,可以使用命令行方式快速完成;对于需要集成到大型应用系统中的情况,可以使用 Python 接口进行深度集成。
应用场景
文档数字化:企业可以利用 Surya OCR 快速将大量的纸质文档转换为可编辑的电子文档,提高文档管理的效率和便捷性,减少人工录入的工作量和错误率。
数据提取:在数据挖掘和分析领域,能够帮助用户从大量的文档中提取关键信息,例如从合同、报告、新闻文章等文档中提取特定的文本内容,为数据分析和决策提供支持。
科研与教育:对于科研人员和教育工作者,Surya OCR 可以用于处理学术文献、教科书等含有复杂图表和公式的文档,方便信息的提取和检索,有助于学术研究和教学工作的开展。
自动化办公:可以集成到办公自动化系统中,实现文档的自动分类、识别和处理,例如自动识别和提取发票信息、合同条款等,提高办公效率和准确性。
安装使用
安装
对于那些想要尝试Surya的开发者和用户来说,安装和使用过程相对简单直接。以下是详细的步骤说明:
1.安装要求:
- Python 3.9+
- PyTorch(建议先安装CPU版本,除非使用Mac或GPU机器)
- 推荐使用GPU以获得更好的性能
2.安装命令:
pip install surya-ocr
安装完成后,Surya会在首次运行时自动下载所需的模型权重。
使用
Surya提供了多种使用方式,包括命令行接口、Python API和交互式GUI应用。
命令行OCR:
surya_ocr DATA_PATH --images --langs hi,en
这个命令会处理指定路径的图像或PDF文件,并输出检测到的文本和边界框信息。
Python API:
from PIL import Image
from surya.ocr import run_ocr
from surya.model.detection.model import load_model as load_det_model, load_processor as load_det_processor
from surya.model.recognition.model import load_model as load_rec_model
from surya.model.recognition.processor import load_processor as load_rec_processor
image = Image.open(IMAGE_PATH)
langs = ["en"] # 指定语言,可选但推荐
det_processor, det_model = load_det_processor(), load_det_model()
rec_model, rec_processor = load_rec_model(), load_rec_processor()
predictions = run_ocr([image], [langs], det_model, det_processor, rec_model, rec_processor)
交互式GUI:
Surya还提供了一个基于Streamlit的交互式应用,允许用户直接在Web界面上测试OCR功能。运行以下命令启动GUI:
pip install streamlit
surya_gui
项目地址
https://github.com/VikParuchuri/surya