IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python实现批量增值税发票文字识别(ocr),并写入excel表格 -> 正文阅读

[Python知识库]python实现批量增值税发票文字识别(ocr),并写入excel表格

背景:

今天刷文章,发现有人自己做了个发票ocr,来实现发票文字识别,以解决低效繁琐的手工录入问题,大大的提高了工作效率,但他的ocr似乎还不是很成熟,我就想调用百度api来实现发票文字识别部分,挑选自己想要的东西写入excel表格,花了点时间,但是实现了,分享出来,希望能够帮到有需要的人

先上效果图,设计隐私,已马赛克
在这里插入图片描述写入表格

在这里插入图片描述

准备工作

1.环境配置,你需要有以下四个库

import requests
import base64
import os
import xlwt

2.你需要在百度智能云注册一个账号,然后在管理控制台新建一个文字识别的应用,这样网站会给到你一个API key和一个Secret Key,有了这俩串字符,我们才能进行下一步操作,获取身份令牌access_token
这是
这是百度智能云的管理控制台

在这里插入图片描述
然后在这里创建应用

在这里插入图片描述
选择文字识别方向,记得勾选增值税发票这一项,默认应该是选上的

在这里插入图片描述
这里就是api key和Secret Key,到时候代码里的这个也要求替换成自己的,获取access_token也需要

然后打开技术文档,里面有一个api文档,教你怎样获取access_token

在这里插入图片描述
获取access_token的代码如下,请把api key 和Secret Key替换成自己的就行

# encoding:utf-8
import requests 

# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】'
response = requests.get(host)
if response:
    print(response.json())

到了这里我们就已经获得了access_token了,接下来就要把他复制粘贴到代码里,我们的准备工作就完成了

代码里修改一下发票存放地址path、access_token就能用了
代码里面有注释
上代码

# encoding:utf-8

import requests
import base64
import os
import xlwt
'''
增值税发票识别
'''
# 获取发票正文内容
def get_context(pic):
    # print('正在获取图片正文内容!')
    data = {}
    try:
        request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice"
        # 二进制方式打开图片文件
        f = open(pic, 'rb')
        img = base64.b64encode(f.read())
        params = {"image":img}

        # 这里需要替换成自己的access_token
        access_token = '你的access_token'

        request_url = request_url + "?access_token=" + access_token
        headers = {'content-type': 'application/x-www-form-urlencoded'}
        response = requests.post(request_url, data=params, headers=headers)
        if response:
            # print (response.json())
            json1 = response.json()
            data['SellerRegisterNum'] = json1['words_result']['SellerRegisterNum']
            data['InvoiceDate'] = json1['words_result']['InvoiceDate']
            data['PurchasserName'] = json1['words_result']['PurchaserName']
            data['SellerName'] = json1['words_result']['SellerName']
            data['AmountInFiguers'] = json1['words_result']['AmountInFiguers']
            # print(data['AmountInFiguers'])
        # print('正文内容获取成功!')
        return data

    except Exception as e:
        print(e)
    return data

# 定义生成图片路径的函数
def pics(path):
    print('正在生成图片路径')
    #生成一个空列表用于存放图片路径
    pics = []
    # 遍历文件夹,找到后缀为jpg和png的文件,整理之后加入列表
    for filename in os.listdir(path):
        if filename.endswith('jpg') or filename.endswith('png'):
            pic = path + '/' + filename
            pics.append(pic)
    print('图片路径生成成功!')
    return pics
# 定义一个获取文件夹内所有文件正文内容的函数,每次返回一个字典,把返回的所有字典存放在一个列表里
def datas(pics):
    datas = []
    for p in pics:
        data = get_context(p)
        datas.append(data)
    return datas

# 定义一个写入将数据excel表格的函数
def save(datas):
    print('正在写入数据!')
    book = xlwt.Workbook(encoding='utf-8', style_compression=0)
    sheet = book.add_sheet('增值税发票内容登记', cell_overwrite_ok=True)
    # 设置表头,这里可以根据自己的需求设置,我这里设置了5个
    title = ['开票日期', '纳税人识别号', '购买方名称', '卖方名称', '购买金额']
    for i in range(len(title)):
        sheet.write(0, i, title[i])
    for d in range(len(datas)):
        for j in range(len(title)):
            sheet.write(d + 1, 0, datas[d]['InvoiceDate'])
            sheet.write(d + 1, 1, datas[d]['SellerRegisterNum'])
            sheet.write(d + 1, 2, datas[d]['PurchasserName'])
            sheet.write(d + 1, 3, datas[d]['SellerName'])
            sheet.write(d + 1, 4, datas[d]['AmountInFiguers'])
    print('数据写入成功!')
    book.save('增值税发票.xls')

def main():
    print('开始执行!!!')
    # 这是你发票的存放地址,自行更改
    path = 'D:/fapiao'
    Pics = pics(path)
    Datas = datas(Pics)
    save(Datas)
    print('执行结束!')


if __name__ == '__main__':
    main()


注意:

本项目可以实现后缀名为.jpg和.png的增值税发票的文字识别,并写入excel表格里,如需其他格式,稍作修改也能行

百度智能云返回的字段很丰富,按需取用,这次实战我选用的是五个字段,请大家自行修改使用,都包含在返回的json文件里面

总结一下,修改了path和access_token,就能使用,是不是很方便呢

感谢大家的阅读,我们下次见!!!

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-30 18:53:50  更:2022-01-30 18:55:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:42:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码