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

相关推荐
狼刀流1 分钟前
(8) cuda分析工具
python·cuda
Gnevergiveup2 分钟前
2024网鼎杯青龙组Web+Misc部分WP
开发语言·前端·python
尘佑不尘15 分钟前
shodan5,参数使用,批量查找Mongodb未授权登录,jenkins批量挖掘
数据库·笔记·mongodb·web安全·jenkins·1024程序员节
LaoZhangGong12316 分钟前
使用常数指针作为函数参数
c++·经验分享
机器学习之心1 小时前
GCN+BiLSTM多特征输入时间序列预测(Pytorch)
人工智能·pytorch·python·gcn+bilstm
Iqnus_1231 小时前
vue下载安装
前端·vue.js·笔记
子墨7771 小时前
MySQL学习笔记
python
黑龙江亿林等级保护测评1 小时前
等保行业如何选择核实的安全防御技术
网络·人工智能·python·安全·web安全·智能路由器·ddos
CLCNboss1 小时前
Mac安装Ruby
开发语言·经验分享·笔记·macos·ruby
ai产品老杨1 小时前
深度学习模型量化原理
开发语言·人工智能·python·深度学习·安全·音视频