首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

图像识别不再难,一个用Python实现办公神器的实用教程!

还在为手动处理办公文件中的表格图片抓狂吗?别担心!今天我带你用 Python 和图像识别技术,把图片里的文字一键提取出来。无论是会议记录还是报表截图,只需几行代码,就能轻松搞定,提升你的办公效率!

1. 图像识别核心工具:Pytesseract

Pytesseract是一个基于 Tesseract OCR 引擎的 Python 库,专门用来识别图片中的文字。Tesseract 是谷歌维护的开源项目,识别准确率很高。

安装必要的工具

首先,确保安装了 Tesseract OCR 引擎。

Windows 用户可以在 Tesseract 官方安装页 下载并安装。

macOS 用户可通过 Homebrew 安装:

brew install tesseract

Linux 用户可通过包管理器安装:

sudo apt install tesseract-ocr

安装 Python 库:

pip install pytesseract pillow

简单示例:识别图片文字

以下是一个简单的例子,展示如何用 Python 提取图片中的文字:

from PIL import Image

import pytesseract

# 确保指定 Tesseract 可执行文件路径(Windows 用户)

pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

# 加载图片

image = Image.open("table_image.png")

# 提取文字

text = pytesseract.image_to_string(image)

print("识别出的文字如下:")

print(text)

运行代码后,你会看到图片中的文字内容被直接打印出来!

小贴士:如果识别结果不理想,可能是图片质量不好,可以尝试对图片做一些预处理(后面会讲)。

2. 提高识别效果:图片预处理技巧

有时候图片中的文字识别效果不佳,我们可以通过图片预处理来提高准确率。

常见的预处理方法

转换为灰度图像:去掉颜色信息,专注于文字区域。

二值化:将图片转换为黑白,提高对比度。

去噪点:清理图片中的杂点,减少干扰。

示例代码

import cv2

import numpy as np

from PIL import Image

# 使用 OpenCV 加载图片

image = cv2.imread("table_image.png")

# 转换为灰度图像

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 二值化

_, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)

# 保存预处理后的图片

cv2.imwrite("processed_image.png", binary)

# 再用 Pytesseract 识别

processed_image = Image.open("processed_image.png")

text = pytesseract.image_to_string(processed_image)

print("优化后的识别结果:")

print(text)

小贴士:图片预处理尤其适合文字模糊、背景复杂的场景,动手试试效果吧!

3. 表格文字提取:用 Pytesseract 识别表格结构

如果你的图片中有表格结构(比如 Excel 截图),提取每个单元格的内容会稍复杂一些。

让 Pytesseract 输出表格结构

可以通过image_to_boxes或image_to_data方法获取每块文字的位置信息。

# 输出表格中的每个单元格内容和位置

data = pytesseract.image_to_data(image, output_type=pytesseract.Output.DICT)

# 遍历所有文字块

for i in range(len(data["text"])):

  if data["text"][i].strip():  # 跳过空块

      print(f"文字: {data['text'][i]},位置: ({data['left'][i]}, {data['top'][i]})")

实际应用:生成 Excel 文件

可以结合pandas把识别出的文字保存到 Excel:

import pandas as pd

# 提取表格内容

rows = []

for i in range(len(data["text"])):

  if data["text"][i].strip():

      rows.append(data["text"][i])

# 保存为 Excel

df = pd.DataFrame(rows, columns=["内容"])

df.to_excel("output.xlsx", index=False)

print("表格内容已保存到 output.xlsx!")

4. 高级应用:多语言识别

Tesseract 支持多语言,只需下载对应语言包并指定语言参数。

安装语言包

以中文为例:

sudo apt install tesseract-ocr-chi-sim

使用语言包

text = pytesseract.image_to_string(image, lang="chi_sim")

print("中文识别结果:")

print(text)

注意事项:如果同时处理多种语言,可以用lang="eng+chi_sim"的形式指定多个语言包。

5. 小练习:动手试一试

下载一张包含表格的图片,尝试提取表格中的所有文字并保存为 Excel 文件。

使用 OpenCV 对图片进行预处理,比较预处理前后的识别效果。

尝试用 Pytesseract 提取一张多语言图片中的文字内容。

结尾

小伙伴们,今天的Python学习之旅就到这里啦!祝大家学习愉快,Python学习节节高!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O1AEA2sS668x5tVAU1Te2Ahg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券