当前位置: 首页 > news >正文

淘宝客网站建设视频凉州区新农村建设网站

淘宝客网站建设视频,凉州区新农村建设网站,wordpress主题jenney,网站开发有专利吗每天面对成堆的发票,无论是税务发票还是承兑单据,抑或是其他各类公司数据要从照片、PDF等不同格式的内容中提取,我们都有必要进行快速办公的能力提升。因此,我们的目标要求就十分明显了,首先要从图片中获取数据&#x…

每天面对成堆的发票,无论是税务发票还是承兑单据,抑或是其他各类公司数据要从照片、PDF等不同格式的内容中提取,我们都有必要进行快速办公的能力提升。

因此,我们的目标要求就十分明显了,首先要从图片中获取数据,其次将数据统一导入到EXCEL中。

配置需求
1.ImageMagick : https://download.csdn.net/download/yyfloveqcw/87579790
2.tesseract-OCR : https://download.csdn.net/download/yyfloveqcw/87579801
3.Python3.7
4.from PIL import Image as PI
5.import io
6.import os
7.import pyocr.builders
8.from cnocr import CnOcr
9.import xlwt

分析上图发现票据金额为“贰拾万元整”,数据金额为大写中文,因此在导入Excel之前我们需要将金额票据的数据转换成数字的格式,基于此,我们需要首先完成大写汉字和数字的转换。

def chineseNumber2Int(strNum: str):result = 0temp = 1  # 存放一个单位的数字如:十万count = 0  # 判断是否有chArrcnArr = ['壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']chArr = ['拾', '佰', '仟', '万', '亿']for i in range(len(strNum)):b = Truec = strNum[i]for j in range(len(cnArr)):if c == cnArr[j]:if count != 0:result += tempcount = 0temp = j + 1b = Falsebreakif b:for j in range(len(chArr)):if c == chArr[j]:if j == 0:temp *= 10elif j == 1:temp *= 100elif j == 2:temp *= 1000elif j == 3:temp *= 10000elif j == 4:temp *= 100000000count += 1if i == len(strNum) - 1:result += tempreturn result

通过上述代码即可实现大写字母与数字的转换,例如输入“贰拾万元整”即可导出“200000”,再将其转换成数字后即可极大地简化表格的操作,也可以在完成表格操作的同时有利于数据归档。

接下来,我们需要分析发票的内部内容,分析下图可知,我们需要获取以下几个数据内容:“出票日期”、“汇票到账日期”、“票据号码”、“收款人”、“票据金额”、“出票人”,可以通过画图软件获取精准定位。

如图,小黑点即鼠标所在地,画图软件左下角即他的坐标。

  1. 提取出票日期
def text1(new_img):#提取出票日期left = 80top = 143right = 162bottom = 162image_text1 = new_img.crop((left, top, right, bottom))#展示图片#image_text1.show()txt1 = tool.image_to_string(image_text1)print(txt1)return str(txt1)
2.提取金额
def text2(new_img):#提取金额left = 224top = 355right = 585bottom = 380image_text2 = new_img.crop((left, top, right, bottom))#展示图片#image_text2.show()image_text2.save("img/tmp.png")temp = ocr.ocr("img/tmp.png")temp="".join(temp[0])txt2=chineseNumber2Int(temp)print(txt2)return txt2
3.提取出票人
def text3(new_img):#提取出票人left = 177top = 207right = 506bottom = 231image_text3 = new_img.crop((left, top, right, bottom))#展示图片#image_text3.show()image_text3.save("img/tmp.png")temp = ocr.ocr("img/tmp.png")txt3="".join(temp[0])print(txt3)return txt3
4.提取付款行
def text4(new_img):#提取付款行left = 177top = 274right = 492bottom = 311image_text4 = new_img.crop((left, top, right, bottom))#展示图片#image_text4.show()image_text4.save("img/tmp.png")temp = ocr.ocr("img/tmp.png")txt4="".join(temp[0])print(txt4)return txt4
5.提取汇票到账日期
def text5(new_img):#提取汇票到日期left = 92top = 166right = 176bottom = 184image_text5 = new_img.crop((left, top, right, bottom))#展示图片#image_text5.show()txt5 = tool.image_to_string(image_text5)print(txt5)return txt5
6.提取票据单据
def text6(new_img):#提取票据号码left = 598top = 166right = 870bottom = 182image_text6 = new_img.crop((left, top, right, bottom))#展示图片#image_text6.show()txt6 = tool.image_to_string(image_text6)print(txt6)return txt6

在将数据全部提取完成之后,即进入设置环节,我们需要首先将所有账单文件进行提取,获取他们的文件名和路径。

ocr=CnOcr()
tool = pyocr.get_available_tools()[0]
filePath='img'
img_name=[]
for i,j,name in os.walk(filePath):img_name=name

在获取完整后,即可进行数据导入Excel的操作。

count=1
book = xlwt.Workbook(encoding='utf-8',style_compression=0)
sheet = book.add_sheet('test',cell_overwrite_ok=True)
for i in img_name:img_url = filePath+"/"+iwith open(img_url, 'rb') as f:a = f.read()new_img = PI.open(io.BytesIO(a))## 写入csvcol = ('年份','出票日期','金额','出票人','付款行全称','汇票到日期','备注')for j in range(0,7):sheet.write(0,j,col[j])book.save('1.csv')shijian=text1(new_img)sheet.write(count,0,shijian[0:4])sheet.write(count,1,shijian[5:])sheet.write(count,2,text2(new_img))sheet.write(count,3,text3(new_img))sheet.write(count,4,text4(new_img))sheet.write(count,5,text5(new_img))sheet.write(count,6,text6(new_img))count = count + 1

至此,完整流程结束。

附上源码全部:

from  wand.image import  Image
from PIL import Image as PI
import pyocr
import io
import re
import os
import shutil
import pyocr.builders
from cnocr import CnOcr
import requests
import xlrd
import xlwt
from openpyxl import load_workbookdef chineseNumber2Int(strNum: str):result = 0temp = 1  # 存放一个单位的数字如:十万count = 0  # 判断是否有chArrcnArr = ['壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']chArr = ['拾', '佰', '仟', '万', '亿']for i in range(len(strNum)):b = Truec = strNum[i]for j in range(len(cnArr)):if c == cnArr[j]:if count != 0:result += tempcount = 0temp = j + 1b = Falsebreakif b:for j in range(len(chArr)):if c == chArr[j]:if j == 0:temp *= 10elif j == 1:temp *= 100elif j == 2:temp *= 1000elif j == 3:temp *= 10000elif j == 4:temp *= 100000000count += 1if i == len(strNum) - 1:result += tempreturn resultdef text1(new_img):#提取出票日期left = 80top = 143right = 162bottom = 162image_text1 = new_img.crop((left, top, right, bottom))#展示图片#image_text1.show()txt1 = tool.image_to_string(image_text1)print(txt1)return str(txt1)
def text2(new_img):#提取金额left = 224top = 355right = 585bottom = 380image_text2 = new_img.crop((left, top, right, bottom))#展示图片#image_text2.show()image_text2.save("img/tmp.png")temp = ocr.ocr("img/tmp.png")temp="".join(temp[0])txt2=chineseNumber2Int(temp)print(txt2)return txt2def text3(new_img):#提取出票人left = 177top = 207right = 506bottom = 231image_text3 = new_img.crop((left, top, right, bottom))#展示图片#image_text3.show()image_text3.save("img/tmp.png")temp = ocr.ocr("img/tmp.png")txt3="".join(temp[0])print(txt3)return txt3
def text4(new_img):#提取付款行left = 177top = 274right = 492bottom = 311image_text4 = new_img.crop((left, top, right, bottom))#展示图片#image_text4.show()image_text4.save("img/tmp.png")temp = ocr.ocr("img/tmp.png")txt4="".join(temp[0])print(txt4)return txt4
def text5(new_img):#提取汇票到日期left = 92top = 166right = 176bottom = 184image_text5 = new_img.crop((left, top, right, bottom))#展示图片#image_text5.show()txt5 = tool.image_to_string(image_text5)print(txt5)return txt5
def text6(new_img):#提取票据号码left = 598top = 166right = 870bottom = 182image_text6 = new_img.crop((left, top, right, bottom))#展示图片#image_text6.show()txt6 = tool.image_to_string(image_text6)print(txt6)return txt6ocr=CnOcr()tool = pyocr.get_available_tools()[0]filePath='img'
img_name=[]
for i,j,name in os.walk(filePath):img_name=name
count=1book = xlwt.Workbook(encoding='utf-8',style_compression=0)
sheet = book.add_sheet('test',cell_overwrite_ok=True)for i in img_name:img_url = filePath+"/"+iwith open(img_url, 'rb') as f:a = f.read()new_img = PI.open(io.BytesIO(a))## 写入csvcol = ('年份','出票日期','金额','出票人','付款行全称','汇票到日期','备注')for j in range(0,7):sheet.write(0,j,col[j])book.save('1.csv')shijian=text1(new_img)sheet.write(count,0,shijian[0:4])sheet.write(count,1,shijian[5:])sheet.write(count,2,text2(new_img))sheet.write(count,3,text3(new_img))sheet.write(count,4,text4(new_img))sheet.write(count,5,text5(new_img))sheet.write(count,6,text6(new_img))count = count + 1
http://www.yayakq.cn/news/375161/

相关文章:

  • 网站设计登录界面怎么做抖音引流推广一个30元
  • 徐州网站建设公司网站qq聊天代码
  • 网站建设需要什么证书甘肃自助建站系统哪家好
  • 如何在本地搭建网站广告营销策划案
  • 深圳住建设局网站公租房面向网站开发的相关知识
  • 网站制作工作室哪家比较好深圳网站备案查询
  • 2016网站优化有没有代做课程设计的网站
  • 做网站应该掌握的技术设计签名
  • 关键词点击优化工具网站seo优化工具
  • 海南省建设考试网站房子设计图软件app免费
  • 怎样制作网站教程哪家好如何搭建网站教程视频
  • 如何打死网站聊大 网站设计
  • 影楼手机网站设计音乐制作人是干什么的
  • 吉林网站建站系统平台漂亮的网站建设中静态页
  • 所有网站的分辨率如何用txt做网站时增加照片
  • 怎么在国外建网站推盟
  • 个人建立网站后怎么盈利微网站界面设计
  • 免费建站哪里找网站建设第三方
  • 英文网站注意事项网页设计模板与效果图
  • 中国网站建设公司排名网页设计与制作教程html
  • 广州网站推广制作如何在网站上做抽奖系统
  • 做网站要审批吗app开发的知名公司有哪些
  • 设计导航精选最好的设计网站大全巢湖市重点工程建设管理局网站
  • 知名的摄影网站有哪些公司部门
  • 做网站的职业叫什么电商的运营推广
  • 企业常用的网络营销方法东莞网站建设乐云seo在线制作
  • 建站哪家好社区wordpress只显示文本摘要
  • 重庆做商城网站建设wordpress 锚文点
  • 梅州网站建设公司甘孜建设机械网站
  • 梅河口网站开发国外外贸需求网站