综合介绍
Versatile OCR Program 是一个开源的光学字符识别(OCR)工具,专门为处理复杂的学术和教育文档设计。它能从PDF、图像等文件中提取文本、表格、数学公式、图表和示意图,并生成适合机器学习训练的结构化数据。支持多语言,包括英语、日语和韩语,输出格式为JSON或Markdown,方便开发者使用。
功能列表
- 提取多语言文本,支持英语、日语、韩语等,可扩展其他语言。
- 识别数学公式,生成LaTeX代码和自然语言描述。
- 解析表格,保留行列结构,输出结构化数据。
- 分析图表和示意图,生成语义标注和描述(如“此图展示细胞分裂四个阶段”)。
- 处理复杂布局PDF,准确识别公式密集段落和视觉元素。
- 输出JSON或Markdown格式,包含语义上下文,优化AI训练。
- 使用DocLayout-YOLO、Google Vision API、MathPix等技术,提升识别精度。
- 提供90–95%的高准确率,适用于真实学术数据集(如EJU生物、东大数学)。
- 支持批量处理,处理多文件输入。
使用帮助
安装流程
要使用Versatile OCR Program,需克隆仓库并配置环境。以下是详细步骤:
- 克隆仓库
在终端运行:git clone https://github.com/ses4255/Versatile-OCR-Program.git cd Versatile-OCR-Program
- 创建虚拟环境
推荐使用Python 3.8或更高版本。创建并激活虚拟环境:python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows
- 安装依赖
安装项目所需库:pip install -r requirements.txt
依赖包括
opencv-python
、google-cloud-vision
、mathpix
、pillow
等。确保网络连接稳定。 - 配置API密钥
项目依赖外部API(如Google Vision、MathPix)进行高级OCR处理:- Google Vision API:在
config/
目录下创建google_credentials.json
,填入服务账号密钥。获取密钥请访问Google Cloud Console。 - MathPix API:在
config/
目录下创建mathpix_config.json
,填入app_id
和app_key
。注册MathPix账户可获取密钥。 - 配置文件模板见项目
README.md
。
- Google Vision API:在
- 验证安装
运行测试脚本确保环境正确:python test_setup.py
如无错误,安装完成。
操作流程
Versatile OCR Program分为两阶段运行:初始提取和语义处理。
1. 初始OCR提取
运行ocr_stage1.py
提取原始元素(文本、表格、图表等):
python ocr_stage1.py --input sample.pdf --output temp/
--input
指定输入文件(PDF或图像,如PNG、JPEG)。--output
指定中间结果目录,包含坐标、裁剪图像等。- 支持批量处理:用
--input_dir
指定文件夹。
2. 语义处理与最终输出
运行ocr_stage2.py
将中间数据转为结构化输出:
python ocr_stage2.py --input temp/ --output final/ --format json
--input
指定第一阶段的输出目录。--format
选择输出格式(json
或markdown
)。- 输出包含文本、公式描述、表格数据和图表语义标注。
主要功能操作
1. 多语言文本提取
提取PDF或图像中的文本,支持多语言:
python ocr_stage1.py --input document.pdf --lang eng+jpn+kor --output temp/
python ocr_stage2.py --input temp/ --output final/ --format markdown
--lang
指定语言,格式为eng
(英语)、jpn
(日语)、kor
(韩语),多语言用+
连接。- 输出文件包含文本内容和语义上下文,保存为Markdown或JSON。
2. 数学公式识别
识别公式并生成LaTeX代码及描述。例如,公式x^2 + y = 5
输出为“一个二次方程,包含变量x和y”。操作:
python ocr_stage1.py --input math.pdf --mode math --output temp/
python ocr_stage2.py --input temp/ --output final/ --format json
--mode math
激活公式识别。- 输出包含LaTeX代码和自然语言描述。
3. 表格解析
提取表格,保留行列结构:
python ocr_stage1.py --input table.pdf --mode table --output temp/
python ocr_stage2.py --input temp/ --output final/ --format json
--mode table
专注于表格处理。- 输出为JSON,包含行列数据和总结描述。
4. 图表与示意图分析
分析图表或示意图,生成语义标注。例如,折线图可能输出“显示2010至2020年气温变化的折线图”。操作:
python ocr_stage1.py --input diagram.pdf --mode figure --output temp/
python ocr_stage2.py --input temp/ --output final/ --format markdown
--mode figure
启用图表分析。- 输出包含图像描述、数据点提取和上下文。
使用技巧
- 提高准确率:输入高分辨率文件(推荐300 DPI)。运行时添加
--dpi 300
优化图像解析。 - 批量处理:用
--input_dir data/
处理文件夹内所有文件。 - 自定义语言:编辑
config/languages.json
添加语言,需安装对应OCR模型(如Tesseract语言包)。 - 调试日志:添加
--verbose
查看详细运行信息。 - 压缩输出:用
--compress
减小JSON文件体积。
注意事项
- 确保输入文件清晰,低质量文件可能降低识别精度。
- 外部API需稳定网络,建议配置备用密钥。
- 输出目录需有足够磁盘空间,大型PDF可能生成较大文件。
- 根据GNU AGPL-3.0许可证,衍生项目必须公开源代码。
- 项目计划一个月内发布AI流水线集成,敬请关注。
通过以上步骤,用户可快速上手,处理复杂文档并生成AI训练数据。
应用场景
- 学术研究数据提取
研究人员可从考试试卷或论文中提取公式、表格和图表,生成带语义标注的数据集。例如,将东大数学试卷转为JSON,用于几何模型训练。 - 教育资源数字化
学校可将纸质教材或试卷转为电子格式,提取多语言文本和图表,生成可搜索档案。适合国际课程的多语言处理。 - 机器学习数据集构建
开发者可从学术文档提取结构化数据,生成高质量训练集。例如,提取生物试卷的细胞分裂图表,标注阶段描述,训练图像识别模型。 - 档案馆文档处理
图书馆可将历史学术文档转为数字格式,保留公式和表格结构,提高检索效率。支持复杂布局的PDF处理。 - 考试分析工具
教育机构可分析试卷内容,提取题目类型和图表,生成统计报告,优化教学设计。
QA
- 支持哪些输入格式?
支持PDF和图像(PNG、JPEG)。推荐高分辨率PDF以确保准确率。 - 如何提高表格识别精度?
使用清晰文件,启用--dpi 300
。对于日语表格,Google Vision API优于MathPix,可在config/
中调整。 - 是否必须使用付费API?
Google Vision和MathPix API需付费账户,但DocLayout-YOLO等开源模块免费。建议配置API以获得最佳效果。 - 如何添加新语言?
编辑config/languages.json
,添加语言代码和OCR模型(如Tesseract语言包)。重启程序生效。 - 输出文件过大怎么办?
用--compress
压缩JSON,或选择Markdown格式。也可限制输出模块,如仅提取文本(--mode text
)。 - 如何参与项目改进?
可通过GitHub提交Pull Request或联系作者(邮箱:ses425500000@gmail.com)。欢迎贡献代码或反馈问题。