Python自动化发票处理:使用Pytesseract和Pandas从图像中提取信息并保存到Excel

1. 引言

在财务部门,处理大量的纸质或扫描版发票是一项既耗时又容易出错的任务。通过使用Python中的pytesseract(一个OCR工具)和pandas库,我们可以自动化这一过程,从而提高工作效率并减少错误。

2. 安装所需库

首先确保你的开发环境中安装了以下库:

  • pytesseract:用于OCR文本识别。
  • Pillow:用于图像处理。
  • pandas:用于数据管理和导出到Excel。

可以通过以下命令进行安装:

bash 复制代码
pip install pytesseract pillow pandas

同时,你需要安装Tesseract OCR引擎,并根据实际情况设置其路径。

3. 代码详解

接下来我们将详细解析如何使用这些库来从发票图片中提取关键信息,并将这些信息保存到Excel文件中。

3.1 导入必要的模块

首先导入需要的模块。

python 复制代码
import pytesseract
from PIL import Image
import pandas as pd
import re  # 用于正则表达式

3.2 设置Tesseract路径

设置Tesseract OCR引擎的路径。请根据你的实际安装路径进行调整。

python 复制代码
# 设置Tesseract路径
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

3.3 定义提取发票信息的函数

定义一个名为extract_invoice_info的函数,它接受一个参数:发票图片的路径(image_path)。

打开图像

使用Pillow库打开图像文件。

python 复制代码
def extract_invoice_info(image_path):
    # 打开图像
    img = Image.open(image_path)
使用Tesseract进行OCR识别

使用pytesseract.image_to_string方法对图像进行OCR识别。对于中文发票,我们指定语言为chi_sim

python 复制代码
    # 使用Tesseract进行OCR识别
    text = pytesseract.image_to_string(img, lang='chi_sim')
提取关键信息

使用正则表达式从识别的文本中提取发票号码、开票日期和合计金额。

python 复制代码
    # 提取关键信息
    invoice_number = find_pattern(text, r'发票号码:(\d+)')
    invoice_date = find_pattern(text, r'开票日期:(\d{4}-\d{2}-\d{2})')
    total_amount = find_pattern(text, r'合计金额:(\d+\.\d+)')
    
    return {
        '发票号码': invoice_number,
        '开票日期': invoice_date,
        '合计金额': total_amount
    }

3.4 定义正则表达式匹配函数

定义一个辅助函数find_pattern,用于从文本中查找符合特定模式的信息。

python 复制代码
def find_pattern(text, pattern):
    match = re.search(pattern, text)
    if match:
        return match.group(1)
    return None

3.5 定义保存数据到Excel文件的函数

定义一个名为save_to_excel的函数,它接受两个参数:发票数据列表(data)和输出文件名(output_file)。

python 复制代码
def save_to_excel(data, output_file):
    df = pd.DataFrame(data)
    df.to_excel(output_file, index=False)

4. 运行脚本

保存上面编写的代码到.py文件中,例如命名为auto_invoice.py。然后打开终端或者命令提示符,切换到包含此文件的目录下,执行如下命令运行程序:

一旦运行起来,你就会看到一个名为"invoices.xlsx"的新Excel文件被创建出来,其中包含了从发票图片中提取的关键信息。

5. 结论

通过本文的学习,你应该已经掌握了如何使用Python与pytesseractpandas库来实现自动化发票处理。这不仅可以帮助你快速提取和管理大量发票信息,还能显著提高工作效率。

相关推荐
Python自动化直播39 分钟前
用 Python 爬虫给 AI 直播间做数据反馈机制
人工智能·python·ai·直播
破土士V1 小时前
AI生成测试用例+agent browser实现Web测试用例执行
ai·自动化·cursor·ai生成测试用例·agent browser·ai自动执行测试用例
努力学习的代码小白1 小时前
源码学习04
python
1314lay_10072 小时前
SAP 接口调用 500 Native SSL Error ,导入证书
经验分享·笔记
Ray Wang2 小时前
Context上下文工程
python·学习·ai编程
百里香酚兰2 小时前
【Unity学习笔记】如何把粉色Prefab还原
笔记·学习·unity
YH行业报告分析2 小时前
2026地板检修门全球化布局:锁具安全冗余与承载分级如何驱动地下空间运维升级?
自动化
梦影_2 小时前
Langchain简单快速上手教程(五)——聊天模型之流式传输
java·数据库·人工智能·python·langchain
pt10432 小时前
AIOps机器学习——当警报阈值被调高之后
运维·人工智能·自动化
科技小E2 小时前
国标视频分析平台EasyGBS×自动化AI算法训练服务器DLTM,把通用AI炼成你的现场AI
算法·自动化·音视频