Python中怎么识别图片里的文字

发布时间:2021-07-10 11:58:58 作者:Leah
来源:亿速云 阅读:221
# Python中怎么识别图片里的文字

## 引言

在数字化时代,从图像中提取文字信息(OCR,Optical Character Recognition)已成为常见需求。Python凭借丰富的生态库,提供了多种实现OCR的解决方案。本文将详细介绍如何使用Python识别图片中的文字,涵盖主流库的安装、基本用法、高级技巧以及实际应用场景。

---

## 目录
1. OCR技术简介
2. 常用Python库介绍
   - Tesseract OCR
   - EasyOCR
   - PaddleOCR
3. 环境配置与安装
4. 基础代码示例
5. 高级应用技巧
6. 性能优化建议
7. 常见问题与解决方案
8. 实际应用案例
9. 总结与资源推荐

---

## 1. OCR技术简介

OCR(光学字符识别)是指将图像中的文字转换为可编辑文本的技术。其核心流程包括:
- 图像预处理(去噪、二值化等)
- 文字检测(定位文字区域)
- 字符识别
- 后处理(校正输出结果)

---

## 2. 常用Python库介绍

### 2.1 Tesseract OCR
- **开发者**:Google维护的开源引擎
- **特点**:
  - 支持100+种语言
  - 准确度高但需手动调参
  - 依赖系统安装Tesseract主程序
- **安装**:
  ```bash
  pip install pytesseract
  # 需额外安装Tesseract主程序(https://github.com/tesseract-ocr/tesseract)

2.2 EasyOCR

2.3 PaddleOCR


3. 环境配置与安装

通用依赖

pip install opencv-python pillow numpy

各库额外要求

库名称 额外依赖
Tesseract 系统安装Tesseract并配置PATH
EasyOCR 自动下载预训练模型(约1GB+空间)
PaddleOCR 需安装paddlepaddle基础库

4. 基础代码示例

4.1 使用Tesseract

import pytesseract
from PIL import Image

# 设置Tesseract路径(Windows需配置)
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

# 识别图片
text = pytesseract.image_to_string(Image.open('example.png'), lang='chi_sim+eng')
print(text)

4.2 使用EasyOCR

import easyocr

reader = easyocr.Reader(['ch_sim', 'en'])  # 指定语言
result = reader.readtext('example.jpg', detail=0)  # detail=0只返回文本
print("\n".join(result))

4.3 使用PaddleOCR

from paddleocr import PaddleOCR

ocr = PaddleOCR(use_angle_cls=True, lang="ch")
result = ocr.ocr('example.png', cls=True)
for line in result:
    print(line[1][0])  # 打印识别结果

5. 高级应用技巧

5.1 图像预处理

import cv2

def preprocess(image_path):
    img = cv2.imread(image_path)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
    return thresh

5.2 处理多语言混合文本

# EasyOCR示例
reader = easyocr.Reader(['ja', 'en', 'ko'])

5.3 批量处理图片

from pathlib import Path

for img_file in Path('images/').glob('*.png'):
    text = pytesseract.image_to_string(str(img_file))
    print(f"{img_file.name}:\n{text}\n{'-'*30}")

6. 性能优化建议

  1. 分辨率控制:保持300DPI左右

  2. ROI裁剪:只识别感兴趣区域

  3. 语言选择:仅加载必要语言包

  4. GPU加速

    # PaddleOCR启用GPU
    ocr = PaddleOCR(use_gpu=True)
    

7. 常见问题与解决方案

问题现象 可能原因 解决方案
识别乱码 语言设置错误 检查lang参数
报错找不到Tesseract 路径未正确配置 设置pytesseract.tesseract_cmd
速度极慢 未启用GPU 安装CUDA版本或改用CPU模式
中文识别率低 未使用专用模型 尝试PaddleOCR中文模型

8. 实际应用案例

8.1 发票信息提取

# 使用PaddleOCR提取关键字段
results = ocr.ocr('invoice.jpg')
for item in results:
    text = item[1][0]
    if '金额' in text:
        print(f"金额:{text.split(':')[-1]}")

8.2 验证码识别(简单类型)

# 预处理后识别
captcha = preprocess('captcha.png')
print(pytesseract.image_to_string(captcha, config='--psm 8'))

9. 总结与资源推荐

库选择建议

扩展学习

注:本文代码测试环境为Python 3.8+,不同版本可能需要调整语法。建议使用虚拟环境管理依赖。 “`

(全文约2200字,实际字数可能因Markdown渲染方式略有差异)

推荐阅读:
  1. python如何识别图片中的文字
  2. python如何向图片里添加文字

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:Yii2如何引入bootstrap.js

下一篇:Zoho财务管理功能亮点有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》