news 2026/10/13 15:15:04

拍摄发票照片,自动识别发票金额,开票日期,商家名称,提取关键信息,生成电子记账表。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
拍摄发票照片,自动识别发票金额,开票日期,商家名称,提取关键信息,生成电子记账表。

1. 实际应用场景描述

在个人理财、企业报销、税务管理等领域,我们每天都会收到各种发票(纸质或电子图片)。

- 个人记账时,需要手动输入发票上的金额、日期、商家名称,费时费力。

- 企业财务需要批量处理大量发票,人工录入容易出错。

- 纸质发票不易保存,查找困难。

如果有一个智能程序,只需 拍摄发票照片,就能自动识别关键信息并生成 电子记账表,将极大提升效率,减少人为错误。

2. 痛点分析

1. 手动录入繁琐:每张发票都要逐字段输入。

2. 易出错:数字、日期格式不统一,容易录错。

3. 查找困难:纸质发票不易分类存储。

4. 批量处理难:企业财务面对大量发票时效率低下。

3. 核心逻辑讲解

3.1 图像预处理

- 对拍摄的发票照片进行灰度化、二值化、去噪等操作,提高 OCR 识别率。

- 可使用 OpenCV 进行边缘检测和倾斜校正。

3.2 OCR 文字识别

- 使用

"pytesseract"(Tesseract OCR 的 Python 封装)识别图片中的文字。

- 支持中文识别(需安装中文语言包)。

3.3 关键信息提取

- 使用 规则匹配 或 正则表达式 提取金额(如“¥123.45”)、日期(如“2024-12-31”)、商家名称(通常在发票顶部)。

- 可升级为 NLP 实体识别模型(如 BERT)提高准确率。

3.4 数据存储

- 将提取的信息存入 CSV 文件,形成电子记账表。

- 可扩展为 SQLite 或 Excel 文件。

4. 模块化代码(Python)

# invoice_ocr.py

import cv2

import pytesseract

import re

import csv

from datetime import datetime

class InvoiceOCR:

def __init__(self, output_csv='invoice_records.csv'):

self.output_csv = output_csv

# 初始化 CSV 文件

with open(self.output_csv, 'w', newline='', encoding='utf-8-sig') as f:

writer = csv.writer(f)

writer.writerow(['商家名称', '开票日期', '金额(元)', '识别时间'])

def preprocess_image(self, image_path):

"""图像预处理:灰度化、二值化、去噪"""

img = cv2.imread(image_path)

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

_, thresh = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

denoised = cv2.medianBlur(thresh, 3)

return denoised

def ocr_image(self, image_path):

"""OCR 识别文字"""

processed_img = self.preprocess_image(image_path)

text = pytesseract.image_to_string(processed_img, lang='chi_sim+eng')

return text

def extract_info(self, text):

"""提取商家名称、日期、金额"""

# 商家名称:假设在文本前几行

lines = text.split('\n')

merchant = lines[0].strip() if lines else ''

# 日期:匹配 YYYY-MM-DD 或 YYYY/MM/DD

date_pattern = r'\d{4}[-/]\d{1,2}[-/]\d{1,2}'

date_match = re.search(date_pattern, text)

date = date_match.group() if date_match else ''

# 金额:匹配 ¥123.45 或 123.45元

amount_pattern = r'[¥¥]?\s*\d+\.\d{2}\s*[元]?'

amount_match = re.search(amount_pattern, text)

amount = amount_match.group().replace('¥', '').replace('¥', '').replace('元', '').strip() if amount_match else ''

return merchant, date, amount

def save_to_csv(self, merchant, date, amount):

"""保存到 CSV"""

with open(self.output_csv, 'a', newline='', encoding='utf-8-sig') as f:

writer = csv.writer(f)

writer.writerow([merchant, date, amount, datetime.now().strftime('%Y-%m-%d %H:%M:%S')])

def process_invoice(self, image_path):

"""处理单张发票"""

print("正在识别发票...")

text = self.ocr_image(image_path)

print("识别文本:\n", text)

merchant, date, amount = self.extract_info(text)

print(f"商家:{merchant}, 日期:{date}, 金额:{amount}")

self.save_to_csv(merchant, date, amount)

print("已保存到电子记账表。")

def main():

ocr = InvoiceOCR()

image_path = input("请输入发票照片路径:").strip()

ocr.process_invoice(image_path)

if __name__ == "__main__":

main()

5. README 文件

# 发票自动识别与电子记账工具

基于 Python + OpenCV + Tesseract OCR,实现拍摄发票照片自动识别金额、日期、商家名称,并生成电子记账表。

## 功能

- 发票照片预处理

- OCR 文字识别(支持中英文)

- 关键信息提取

- 自动保存到 CSV 记账表

## 安装依赖

bash

pip install opencv-python pytesseract

> 需安装 [Tesseract OCR](https://github.com/tesseract-ocr/tesseract) 及中文语言包。

## 使用

bash

python invoice_ocr.py

输入发票照片路径,程序会自动识别并保存。

## 示例

输入照片路径后,输出:

商家:星巴克咖啡, 日期:2024-12-31, 金额:36.50

已保存到电子记账表。

6. 使用说明

1. 安装 Tesseract OCR 及中文语言包。

2. 安装 Python 依赖。

3. 运行脚本,输入发票照片路径。

4. 程序会识别并保存信息到

"invoice_records.csv"。

5. 可用 Excel 打开 CSV 查看记账表。

7. 核心知识点卡片

知识点 说明

OCR 技术 使用 Tesseract 将图像转为文本

图像预处理 灰度化、二值化、去噪提高识别率

正则表达式 提取金额、日期等结构化信息

CSV 操作 将数据持久化存储

可扩展性 可升级为 NLP 模型或接入财务系统

8. 总结

本项目展示了如何用 Python + OpenCV + Tesseract OCR + 规则提取 快速实现一个 发票自动识别与电子记账工具,解决了手动录入发票信息的痛点。

- 优点:自动化程度高、可批量处理、易于集成。

- 未来可引入 深度学习 OCR 模型(如 PaddleOCR、TrOCR)和 NLP 实体识别,提升复杂版式发票的识别准确率,并支持导出 Excel、对接财务软件。

- 适合作为 AI 方法与技术课程 的实践案例,涵盖图像处理、文本识别、数据提取与存储全流程。

如果你愿意,可以升级为 PaddleOCR 版本,并增加批量处理和 GUI 界面,让它更适合实际财务工作。

利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注我!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 11:44:26

脱裤子放屁 - 你们讨厌这样的页面吗?

前言 平时在逛掘金和少数派等网站的时候,经常有跳转外链的场景,此时基本都会被中转到一个官方提供的提示页面。 掘金: 知乎: 少数派: 这种官方脱裤子放屁的行为实在令人恼火。是、是、是、我当然知道这么做有很多…

作者头像 李华
网站建设 2026/10/10 10:16:25

高集成Mini高速CAN FD系统基础芯片SIT1169Q

在汽车电子与工业自动化领域,CAN总线作为核心通信协议,对其配套芯片的集成度、可靠性与性能提出了严苛要求。芯力特推出的SIT1169Q作为一款Mini高速CAN FD系统基础芯片(System Basis Chip, SBC),通过高度集成高速CAN F…

作者头像 李华
网站建设 2026/10/13 5:55:46

网络安全靶场推荐,通过实战快速提升技能!

前言 自学网络安全知识,具备一定的理论基础,缺乏实战经验,想去网络靶场体验一下,通过实操能快速提升实战技能! 可推荐的网络靶场: 1、春秋云境.com:平台涵盖350CVE靶标和10套大型仿真场景&am…

作者头像 李华
网站建设 2026/10/12 23:16:35

《信息安全毕业主推的6大岗位(2025真实版)》

《信息安全毕业主推的6大岗位(2025真实版)》 关于我:资深IT专家,AI布道者,15年实战老兵多本专业图书作者大厂技术面试官。 根据2024年官方公布的数据显示,到2027年我国网络安全人员缺口将达327万。 尽管全国已有626所高…

作者头像 李华
网站建设 2026/10/10 15:49:58

64 K8s安全机制

前言 本文系统阐述Kubernetes安全机制的核心架构与实践方法,详细解析API Server保护的三大关键环节:认证、鉴权和准入控制,以及如何通过RBAC实现细粒度权限管理。特别聚焦在实践中如何创建安全隔离的集群访问账号,适用于Kubernet…

作者头像 李华
网站建设 2026/10/9 1:14:15

谷歌学术搜索使用指南:高效查找学术文献与研究资源的方法技巧

做科研的第一道坎,往往不是做实验,也不是写论文,而是——找文献。 很多新手科研小白会陷入一个怪圈:在知网、Google Scholar 上不断换关键词,结果要么信息过载,要么完全抓不到重点。今天分享几个长期使用的…

作者头像 李华