首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[教程]轻松掌握Python,轻松提取图片中的文字!

发布于 2025-12-03 03:30:08
0
583

引言随着计算机视觉技术的发展,图像文字提取(OCR,Optical Character Recognition)变得越来越流行。Python作为一种功能强大的编程语言,拥有丰富的库来支持图像处理和文字...

引言

随着计算机视觉技术的发展,图像文字提取(OCR,Optical Character Recognition)变得越来越流行。Python作为一种功能强大的编程语言,拥有丰富的库来支持图像处理和文字识别。本文将详细介绍如何使用Python轻松提取图片中的文字。

准备工作

在开始之前,请确保您的Python环境中已安装以下库:

  • Pillow:用于图像处理
  • Pytesseract:Tesseract-OCR的Python封装,用于文字识别

您可以通过以下命令安装这些库:

pip install Pillow pytesseract

安装Tesseract-OCR

Pytesseract依赖于Tesseract-OCR引擎,因此需要先安装Tesseract-OCR。以下是不同操作系统的安装方法:

Windows

  1. 下载Tesseract-OCR的Windows版本:Tesseract-OCR for Windows
  2. 解压下载的文件,并将tesseract.exe添加到系统环境变量中。

macOS

  1. 使用Homebrew安装Tesseract-OCR:
brew install tesseract

Linux

  1. 使用包管理器安装Tesseract-OCR,例如在Ubuntu上:
sudo apt-get install tesseract-ocr

图像预处理

在提取文字之前,通常需要对图像进行预处理,以提高识别准确率。以下是一些常见的预处理步骤:

转换为灰度图

from PIL import Image
image = Image.open('example.jpg')
gray_image = image.convert('L')
gray_image.save('example_gray.jpg')

二值化

from PIL import Image, ImageOps
image = Image.open('example_gray.jpg')
binary_image = ImageOps.threshold(image, 128, 255)
binary_image.save('example_binary.jpg')

裁剪

from PIL import Image
image = Image.open('example_binary.jpg')
crop_box = (50, 50, 350, 350)
cropped_image = image.crop(crop_box)
cropped_image.save('example_cropped.jpg')

使用Pytesseract提取文字

现在我们已经处理好了图像,可以使用Pytesseract提取文字:

from pytesseract import image_to_string
image = Image.open('example_cropped.jpg')
text = image_to_string(image)
print(text)

高级功能

Pytesseract还提供了许多高级功能,例如:

  • 自定义识别语言
  • 分块识别
  • 识别表格

以下是一些示例代码:

自定义识别语言

from pytesseract import image_to_string
image = Image.open('example.jpg')
text = image_to_string(image, lang='chi_sim')
print(text)

分块识别

from pytesseract import image_to_string
image = Image.open('example.jpg')
text = ''
for i in range(0, image.height, 100): for j in range(0, image.width, 100): box = (j, i, j + 100, i + 100) text += image_to_string(image.crop(box))
print(text)

识别表格

from pytesseract import image_to_data
image = Image.open('example.jpg')
for i, d in enumerate(image_to_data(image)): (x, y, w, h) = (d[6], d[7], d[8] - d[6], d[9] - d[7]) print(f"Detected text: '{d[10]}' at position: ({x}, {y}, {x+w}, {y+h})")

总结

通过本文的介绍,您已经学会了如何使用Python轻松提取图片中的文字。在实际应用中,您可以根据需求对图像进行预处理,并利用Pytesseract的高级功能来提高识别准确率。希望本文对您有所帮助!

评论
一个月内的热帖推荐
csdn大佬
Lv.1普通用户

452398

帖子

22

小组

841

积分

赞助商广告
站长交流