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库来实现自动化发票处理。这不仅可以帮助你快速提取和管理大量发票信息,还能显著提高工作效率。

相关推荐
weixin_307779134 分钟前
Jenkins声明式管道扩展点API:深度解析与应用指南
开发语言·ci/cd·自动化·jenkins·etl
BoBoZz196 分钟前
CellsInsideObject 网格面内外与交界的判定
python·vtk·图形渲染·图形处理
@小码农7 分钟前
2025年厦门市小学生信息学竞赛C++(初赛)真题-附答案
开发语言·c++·python·算法·蓝桥杯
代码游侠8 分钟前
应用--Minishell实现
linux·运维·笔记·学习·算法
星川皆无恙11 分钟前
基于ARIMA 算法模型和NLP:社交媒体舆情分析在涉众型经济犯罪情报挖掘中的应用研究
人工智能·爬虫·python·算法·机器学习·自然语言处理·数据分析
zore_c13 分钟前
【C语言】Win 32 API——一部分内容详解!!!
c语言·开发语言·c++·经验分享·笔记
重生之我在番茄自学网安拯救世界18 分钟前
网络安全中级阶段学习笔记(七):Web 安全之文件上传漏洞笔记1(包含upload-labs-master靶场前三关实战)
笔记·学习·web安全·文件上传漏洞·网安基础
走在路上的菜鸟18 分钟前
Android学Dart学习笔记第十五节 类
android·笔记·学习·flutter
SCBAiotAigc19 分钟前
一个github的proxy url
人工智能·python
Chen--Xing20 分钟前
LeetCode 11.盛最多水的容器
c++·python·算法·leetcode·rust·双指针