PaddleOCR表格识别镜头专利并输入
PaddleOCR表格识别镜头专利并输入
在复现镜头专利时,往往会需要按照专利表格中的内容输入数据,这个过程繁琐且容易出错。本项目拟采用PaddleOCR识别专利表格信息,并利用Zemax和CodeV的API识别输入。
开源项目链接:PaddlePaddle/PaddleOCR at release/3.3
该文件工作目录禁止存在中文
部署方法
安装anaconda
如果已安装并部署好可跳过。
需要注意,anaconda和python安装一个就可以,最好不要重复安装,否则会导致部分下载路径冻结。
anaconda安装链接可参考:最新版最详细Anaconda新手安装+配置+环境创建教程_anaconda配置-CSDN博客
还需要修改pip下载路径,否则会占用大量C盘空间,方法可参考:conda环境配置、pip安装位置问题与解决_conda安装和pip安装包位置-CSDN博客
CUDA和CUDNN安装
这步如果电脑无英伟达GPU或者想使用CPU部署可以跳过。CPU跑一张图片的时间大概在十几秒。
注意如果确保兼容的情况下,要安装CUDA12.6或者CUDA11.8。
2025 CUDA 和 cuDNN 在 Windows 上如何安装配置(保姆级详细版)_windows安装cuda-CSDN博客
这里如果C盘空间够的话可以直接装在C盘,装在其他盘有的时候会出现问题。
进入虚拟环境
执行下面两行指令,创建并进入虚拟环境
1 | conda create -n table_classification python=3.9 |
然后安装Zemax与Python通信所需要的包。
1 | python -m pip install pythonnet |
安装paddlepaddle
进入上面的网页链接,由于我的电脑没有GPU,所以选择CPU模式运行。建议使用gpu否则速度会很慢,但是需要安装cuda和cudnn。
GPU版本
注意!!!!!!!一定要选择旧版本安装,安装3.2.0版本,否则后续推理会出错

1 | # CUDA 12.6 |
CPU版本
在conda的虚拟环境里输入。
1 | python -m pip install paddlepaddle==3.2.0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/ |
验证安装情况
安装后输入python进入解释器,然后输入import paddle,在输入paddle.utils.run_check(),如果出现PaddlePaddle is installed successfully!,则说明安装成功。
在我安装后,输入
import paddle出现报错:
1 No ccache found. Please be aware that recompiling all source files may be required. You can download and install ccache from: https://github.com/ccache/ccache/blob/master/doc/INSTALL.md这个警告是说当前环境中没有找到ccache。这个工具可以加快重新编译的速度,不安装没有影响,但是如果希望提高编译速度,可以输入如下指令
1 conda install -c conda-forge ccache
警告解除。
更多警告可以参考【Mac】安装 PaddleOCR_userwarning: no ccache found. please be aware that-CSDN博客
安装Layout-Parser
1 | pip3 install -U https://paddleocr.bj.bcebos.com/whl/layoutparser-0.0.0-py3-none-any.whl |
安装PaddleOCR
这里是有两个包,PaddleOCR whl包(仅预测),PaddleOCR源码(预测+训练)。本项目预计只使用预测功能,因此仅安装PaddleOCR whl包
1 | pip install "paddleocr==3.3.3" # 一定要使用3.3.3版本,否则版本不匹配 |
运行程序
命令行启动
打开Anaconda Prompt,
1 | conda activate table_classification |
然后切换路径到工程文件夹。注意需要先切换盘符,在使用cd切换路径
1 | e: |
然后执行
1 | python main.py |
VScode启动
参考这个链接对VScode进行配置:全网最简约的Vscode配置Anaconda环境(百分百成功)-阿里云开发者社区
然后在VScode里直接运行程序就可以。
使用方法
程序界面如下
读取图片
对专利表格进行截图,并存放在工程文件夹下的table_pic文件夹内,可以截取多张图片。
存放好后点击读取图片按键,框选多张图片打开。
识别图片
读取完图片点击识别图片。这里程序可能会出现未响应,不用理会等待即可。
程序第一次运行时,会自动下载模型文件,耗时较长(大约几分钟),等得即可。

识别完成后,在output文件夹会生成xlsx表格文件,里面就是识别内容。
写入模板
考虑到不同专利的格式不一致,因此要求用户合适数据无误后,手动粘贴信息到模板中。

| 面数 | 曲率半径 | 厚度 | nd | vd | 光阑面(光阑填1,非光阑不用填) | 表面类型(非球面填1,球面不用填) | 圆锥系数 | A4 | A6 | A8 | A10 | A12 | A14 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
模板格式如上表所示,直接填写就行,目前程序只能执行最基本的写入表格内的信息,无法实现复杂情况(如系统数据,变焦、偏心、倾斜),这部分内容比较少用户可以手动输入。
写入Zemax
打开一个新的zemax文件(因为程序在写入时会清空zemax里的所有数据),然后点击编程–交互扩展。然后点击将模板输入Zemax等待程序运行完成即可。

写入CodeV
打开codev,我的版本是2023.1
在导航栏点击工具–自定义–状态栏。把用户界面进程ID放到选定项目里。

然后就可以在右下角看到PID。(图片里的PID是31788)

点击将模板输入Codev,在弹出的窗口里输入PID,等待执行完成即可。
开发记录
安装anaconda
这一步不做赘述。
需要注意需要修改anaconda路径和pip下载路径,否则会侵占大量C盘空间。
我使用的python版本为3.9版本。
可以执行
1 | conda create -n table_classification python=3.9 |
然后安装Zemax与Python通信所需要的包。
1 | python -m pip install pythonnet |
安装paddlepaddle
进入上面的网页链接,由于我的电脑没有GPU,所以选择CPU模式运行。建议使用gpu否则速度会很慢,但是需要安装cuda和cudnn。
注意!!!!!!!一定要选择旧版本安装,安装3.2.0版本,否则后续推理会出错

在conda的虚拟环境里输入。
1 | python -m pip install paddlepaddle==3.2.0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/ |
安装后输入python进入解释器,然后输入import paddle,在输入paddle.utils.run_check(),如果出现PaddlePaddle is installed successfully!,则说明安装成功。
在我安装后,输入
import paddle出现报错:
1 No ccache found. Please be aware that recompiling all source files may be required. You can download and install ccache from: https://github.com/ccache/ccache/blob/master/doc/INSTALL.md这个警告是说当前环境中没有找到ccache。这个工具可以加快重新编译的速度,不安装没有影响,但是如果希望提高编译速度,可以输入如下指令
1 conda install -c conda-forge ccache
警告解除。
更多警告可以参考【Mac】安装 PaddleOCR_userwarning: no ccache found. please be aware that-CSDN博客
安装Layout-Parser
1 | pip3 install -U https://paddleocr.bj.bcebos.com/whl/layoutparser-0.0.0-py3-none-any.whl |
安装PaddleOCR
这里是有两个包,PaddleOCR whl包(仅预测),PaddleOCR源码(预测+训练)。本项目预计只使用预测功能,因此仅安装PaddleOCR whl包
1 | pip install "paddleocr==3.3.3" # 一定要使用3.3.3版本,否则版本不匹配 |
运行代码进行表格识别
这部分内容仅为了记录开发过程,如果需要查看最终代码请跳转到“完整代码”章节查看
1 | import os |
其中os.environ["PADDLE_PDX_CACHE_HOME"] = os.path.dirname(os.path.abspath(__file__))是为了修改下载模型的路径到当前文件夹下,防止下载到C盘中。
识别情况:
识别框:
表格输出:
表格修正
可以看出,生成的表格存在一定的空格,因此后续对表格进行删除空格操作。
1 | import os |
单列表格无法生成xlsx
发现单列表格无法生成xlsx文件,所以加入了输出json文件辅助生成表格。
1 | def has_generated_table_xlsx(output_dir, input_path): |
创建表格模板
由于不同专利里表格结构不一致,因此需要将识别出来的表格手动填入模板中。
| 面数 | 曲率半径 | 厚度 | nd | vd | 光阑面(光阑填1,非光阑不用填) | 表面类型(非球面填1,球面不用填) | 圆锥系数 | A4 | A6 | A8 | A10 | A12 | A14 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
模板如上。
Python与Zemax通信
使用交互式方法。
Python与CodeV通信
使用交互式方法。

