logo

Python 图片处理与 OCR 文字识别:从入门到实践

作者:rousong2024.01.08 11:50浏览量:13

简介:本文将介绍如何使用 Python 的 Pillow 库进行图片处理,以及如何结合 OCR 技术进行文字识别。我们将通过实例展示如何进行图像增强、文字定位和识别,并给出实际应用中的建议。

在 Python 中,Pillow 是一个强大的图像处理库,可用于图像的读取、编辑、处理和保存。而 OCR(Optical Character Recognition,光学字符识别)技术则可以将图片中的文字转换成可编辑的文本。结合 Pillow 和 OCR,我们可以实现图片中的文字提取和编辑。
一、Pillow 库简介
Pillow 是一个开源的 Python 图像处理库,提供了丰富的图像处理功能,包括图像的缩放、裁剪、旋转、亮度调整等。以下是使用 Pillow 进行图片处理的简单示例:

  1. from PIL import Image
  2. # 打开图片
  3. img = Image.open('example.jpg')
  4. # 显示图片大小
  5. print(img.size)
  6. # 旋转图片
  7. rotated_img = img.rotate(45)
  8. rotated_img.show()

在上述代码中,我们首先导入了 PIL 库中的 Image 模块,然后使用 Image.open() 方法打开了一张图片。接着,我们通过 img.size 属性获取了图片的尺寸,并通过 img.rotate() 方法将图片旋转了 45 度。最后,我们使用 rotated_img.show() 方法显示了旋转后的图片。
二、OCR 技术简介
OCR 技术是一种将图片中的文字转换成可编辑文本的技术。常用的 OCR 工具包括 Tesseract 和 Google Cloud Vision 等。在 Python 中,我们可以使用第三方库如 Pytesseract 或 Google Cloud Vision API 来实现 OCR 功能。以下是使用 Pytesseract 进行 OCR 文字识别的示例:

  1. import pytesseract
  2. from PIL import Image
  3. # 打开图片
  4. img = Image.open('example.jpg')
  5. # 使用 Pytesseract 进行 OCR 文字识别
  6. text = pytesseract.image_to_string(img)
  7. # 打印识别结果
  8. print(text)

在上述代码中,我们首先导入了 Pytesseract 和 PIL 库中的 Image 模块。然后,我们使用 Image.open() 方法打开了一张包含文字的图片。接着,我们通过 pytesseract.image_to_string() 方法将图片中的文字转换成文本,并将结果存储在变量 text 中。最后,我们打印了识别结果。
三、结合 Pillow 和 OCR 进行图片处理与文字识别
结合 Pillow 和 OCR,我们可以先对图片进行预处理,然后使用 OCR 技术进行文字识别。以下是一个完整的示例:

  1. from PIL import Image, ImageEnhance, ImageFilter
  2. import pytesseract
  3. import cv2
  4. # 打开图片并转换为灰度模式
  5. img = Image.open('example.jpg').convert('L')
  6. # 使用 PIL 进行图像增强(锐化)处理
  7. enhancer = ImageEnhance.Contrast(img)
  8. img = enhancer.enhance(2) # 增强对比度(参数可根据实际需求调整)
  9. img = img.filter(ImageFilter.FIND_EDGES) # 使用边缘检测进行锐化(参数可根据实际需求调整)
  10. # 使用 OpenCV 进行二值化处理(可选)
  11. _, img = cv2.threshold(cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR), 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) # Otsu's thresholding method(参数可根据实际需求调整)
  12. # 使用 Pytesseract 进行 OCR 文字识别
  13. text = pytesseract.image_to_string(img)
  14. print(text) # 打印识别结果(结果可能包含误识别和未识别的字符)

相关文章推荐

发表评论