Python 自动识别图片文字—OCR实战教程

OCR 是光学字符识别(英语:Optical Character Recognition,OCR)是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。

很早之前就有同学在公众号后台回复希望出一篇 OCR 相关的文章,今天尝试了一下 cnocr 和 tesseract 两个 Python 开源识别工具的效果,给大家分别讲讲两个工具的使用方法和对比效果。

1.准备


开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。

(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.

(可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南

请选择以下任一种方式输入命令安装依赖
1. Windows 环境 打开 Cmd (开始-运行-CMD)。
2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.

(选择一)安装 cnocr:

pip install cnocr

看到 Successfully installed xxx 则说明安装成功。

如果你只想对图片中的中文进行识别,那么 cnocr 是一个不错的选择,你只需要安装 cnocr 包即可。

但如果你想试试其他语言的OCR识别,Tesseract 是更好的选择。

(选择二)安装 pytesseract:

首先,无论是Windows还是macOS,你都需要安装 pytesseract:

pip install pytesseract

其次,还需要安装Tesseract.

(macOS)Tesseract 在macOS下可以使用brew安装:

brew install tesseract


非常方便,一条命令即可完成安装。

(Windows安装Tesseract

需要先下载安装tesseract的程序,然后下载中文简体字预训练好的模型包(尽管本教程不会用tesseract,但还是给大家提供了)。

你可以在Python实用宝典公众号后台回复:tesseract 打包下载。

下载完成后,将 tesseract-ocr-setup-4.00.00dev.exe 安装到 Tesseract-OCR 指定目录下,复制该目录路径增加到Path中:

并将训练好的模型文件 chi_sim.traineddata 放入该目录中,这样安装就完成了。

2.cnocr 识别图片的中文

cnocr 主要针对的是排版简单的印刷体文字图片,如截图图片,扫描件等。目前内置的文字检测和分行模块无法处理复杂的文字排版定位。

尽管它分别提供了单行识别函数和多行识别函数,但在本人实测下,单行识别函数的效果非常糟糕,或者说要求的条件十分苛刻,基本上连截图的文字都识别不出来。

不过多行识别函数还不错,使用该函数识别的代码如下:

from cnocr import CnOcr
ocr = CnOcr()
res = ocr.ocr('test.png')
print("Predicted Chars:", res)

用于识别这个图片里的文字:

效果如下:


如果不是很吹毛求疵,这样的效果已经很不错了。

3.pytesseract 识别图片的英文

如果你的OCR目的不是中文而是英文,是需要别的模型的。这里给大家分享Tesseract-OCR,它是一款由HP实验室开发,由Google维护的开源OCR引擎。

Tesseract-OCR 可扩展性很强,你可以基于它训练属于自己的OCR模型。

现在给大家看看它分类英文的效果,代码如下:

import pytesseract
from PIL import Image

image = Image.open('test.png')
code = pytesseract.image_to_string(image, lang='eng')
print(code)

识别的图片:

效果如下:

Tesseract 识别英文的效果真的很不错,中文效果就比较一般了。

如果你想试试Tesseract识别中文,只需要将代码中的eng改为chi_sim即可,不过相信我,效果不忍直视。

我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注Python实用宝典。

有任何问题,可以在公众号后台回复:加群,回答相应红字验证信息,进入互助群询问。

原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!

点击下方阅读原文可获得更好的阅读体验

Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

<think>好的,我现在需要帮助用户解决如何在离线环境下部署CnOCR的问题。首先,我得回顾一下用户提供的引用内容,特别是引用[2]和[3],因为它们提到了CnOCR的安装和部署步骤。用户之前可能已经看过这些引用,但需要更详细的离线部署指南。 首先,用户的问题是关于离线部署,这意味着他们可能无法访问互联网来下载依赖项或模型。根据引用[2],CnOCR在Docker环境中安装时使用了清华的镜像源,但离线环境下可能需要预先下载所有依赖项。另外,引用[2]提到需要从百度云盘下载模型文件,这在离线情况下也需要提前准备。 接下来,我需要考虑离线部署的几个关键步骤:环境准备、依赖项安装、模型下载和配置。对于Docker环境,用户可能需要构建一个包含所有依赖和模型的镜像。而如果是非Docker环境,例如直接使用conda,用户需要手动安装所有包,并确保模型文件放置在正确的位置。 同时,用户可能遇到依赖缺失的问题,比如在引用[3]中提到的pillow、scipy、opencv等,这些在离线情况下需要预先下载whl文件或使用conda的离线包。此外,模型文件必须提前下载并放到~/.cnocr目录下,否则即使代码正确,也无法运行。 还需要考虑不同操作系统的兼容性,例如Ubuntu和Windows的路径差异,或者是否使用虚拟环境。用户可能还需要测试OCR功能是否正常工作,所以提供一个简单的测试脚本会有帮助。 最后,应该提醒用户注意模型版本和路径的正确性,避免因为路径错误导致加载失败。同时,如果用户无法访问百度云盘,可能需要寻找其他方式获取模型文件,或者联系项目维护者。</think>### 离线部署 CnOCR 的详细步骤 #### 1. **环境准备** - **操作系统支持**:推荐使用 Linux(Ubuntu/CentOS)或 Windows 10/11 - **Python 版本**:Python 3.6+(建议 3.8) - **安装包管理工具**: ```bash # 离线环境下需提前下载好以下文件 pip download cnocr[ort-cpu] -i https://pypi.tuna.tsinghua.edu.cn/simple ``` #### 2. **依赖项离线处理** - **关键依赖项列表**: - onnxruntime(CPU 版本) - Pillow<7.0.0(注意版本限制) - opencv-python - numpy - scipy - **离线安装方法**: ```bash # 将下载的.whl文件拷贝到离线环境 pip install --no-index --find-links=/path/to/wheels cnocr[ort-cpu] ``` #### 3. **模型文件部署** - **模型下载**: - 官方模型百度云地址:https://pan.baidu.com/s/1wHeNBr8mK4q9UTULS8YQhQ(提取码:cnocr) - 需提前下载以下文件: ``` cnocr-v2.3.zip ocr-densenet_lite_136-gru.zip ocr-densenet_lite_136-fc.zip ``` - **目录结构配置**: ```bash mkdir -p ~/.cnocr/2.3 unzip cnocr-v2.3.zip -d ~/.cnocr/2.3 ``` #### 4. **Docker 离线部署方案** ```dockerfile # Dockerfile 示例 FROM python:3.8-slim COPY ./offline_packages /tmp/packages RUN pip install --no-index --find-links=/tmp/packages cnocr[ort-cpu] COPY ./models /root/.cnocr/2.3 EXPOSE 8501 CMD ["cnocr", "serve", "-p", "8501"] ``` 构建命令: ```bash docker build -t cnocr-offline . docker run -d -p 8501:8501 cnocr-offline ``` #### 5. **验证安装** ```python from cnocr import CnOcr ocr = CnOcr() result = ocr.ocr('test_image.jpg') print(result) ``` #### 注意事项 1. 模型文件必须严格放置于`~/.cnocr/2.3`目录 2. 若使用GPU加速,需额外部署CUDA环境 3. Windows 系统需注意路径分隔符转换问题 4. 建议通过虚拟环境隔离依赖(`python -m venv cnocr_env`)
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值