初学图像识别

最近在学图像识别,浅做一下笔记

图像识别
# 需要的模块
# import os
# #光学识别生成器
# from cnocr import CnOcr
# #读取图片(主要用到 ,裁剪图片的功能)
# from PIL import Image
#
# 流程
# 通过os模块读取文件位置
# 获取每张图片的名字 实例化图片对象
# 通过Image库 对文件对象进行位置裁剪 获取需要被识别的位置的坐标(左上右下)
# 对裁剪下来的文件进行单独保存
# 通过ocr模块对文本进行识别
# 返回数据
# 文件操作模块
import os
# 光学识别生成器w
from cnocr import CnOcr
# 读取照片(主要用到其,裁剪照片功能)
from PIL import Image
# 写入excel模块
import openpyxl

# 识别中文或者数字的对象
ocr = CnOcr()

image_src = r"./images"
# 这是要提取的数据的位置定位参数 顺序(左(x),上(y),右(x),下(y))
place=[[186,205,347,237],[1298,85,1455,112],[977,964,1050,994],[510,762,641,789]]
def shibie():

    image_list = []
    datalist=[]
    # os.walk()目录遍历器
    # 遍历这个文件夹的所有照片文件名字    root:当前文件夹的名字,     dirs当前文件夹下的所有目录,列表形式       file当前文件的下的所有文件   列表形式
    for root, dirs, file in os.walk(image_src):
        # 由于在for循环内所以需要把他抛出for循环
        image_list = file
        print(root)
        print(dirs)
        print(file)
    for i in image_list:
        data = []
        image_url = "images/" + i
        # 机器读取图片需要读取字节码
        # 将img.open()括号中的内容更改为你的图片地址
        new_img = Image.open(image_url)

        for v in place:
            # print(new_img)
            left = v[0]
            up = v[1]
            right = v[2]
            down = v[3]
            # 通过上面给出的坐标去裁剪照片           这里的方法最多传入一个参数 那这个参数就是包含所有坐标的元祖参数
            imag_x = new_img.crop((left, up, right, down))
            # 将照片进行保存
            imag_x.save("imag1.png")
            # 通过实例化的图片识别对象去识别裁剪下来的照片上的内容
            image_text = ocr.ocr("imag1.png")
            print(image_text)       #打印出来是一个一个切割好的字符串在列表的列表里面
            # 把数据先放在一个列表里
            data.append("".join(image_text[0][0]))
        # 再把每张发票数据列表放入一个新列表
        datalist.append(data)
    print(datalist)
    savedata(datalist)

def savedata(datalist):
    # 通过openpyxl的workbook方法实例化了一个xls对象(就是excel文件)
    xls = openpyxl.Workbook()
    #通过文件对象创建一个sheet
    worksheet=xls.active
    # 直接添加可迭代对象(列表之类的)
    worksheet.append(["机器编号","发票代码","开票人","价税合计(大写)"])
    for data in datalist:
        worksheet.append(data)
    #跳出循环命个名字
    xls.save("图像识别11.xls")
if __name__ == '__main__':
    shibie()

    print("执行完毕!")
"""其实也蛮简单的
实例化识别图片信息的对象
实例化裁剪图片的对象
先遍历一下文件路径  放在列表里面    然后写一下横坐标纵坐标的列表
将路径放到实例化的图片裁剪方法里面image.open(图片路径)
调用实例化的裁剪图片的对象的crop方法裁剪指定坐标图片  然后给出一个image_x对象
再通过这个image_x对象保存这张裁剪后的图片  image_x.save("filename")


再通过实例化的识别图片信息对象识别截图   返回一个所有全是字符串的列表 data_text

来个字符串拼接    "".join(全是字符串的列表)
最后每张发票的所有数据放在一个列表
再把所有含有每张发票信息的列表放在一个大列表里面   最后传递给保存数据参数      openpyxl 这个写excel模块是真的好用  直接往sheet里面写可迭代对象就行 安逸的很不用想lxml要算坐标


下载用
pip install pillow

导入 from PIL import Image

     """
# import os
# # 识别类
# from cnocr import CnOcr
# # 读取图片的类
# from PIL import Image
#
# # 实例化图片对象
# new_img=Image.open("./发票.png")
# # 坐标
# place=[186,205,347,237]
# # 通过坐标进行裁剪
# images=new_img.crop(place)
# # 裁剪成图像
# images.save("image1.png")
# # 生成识别对象
# ocr=CnOcr()
# # 通过ocr对象去识别
# image_text=ocr.ocr("image1.png")[0]
#
#
# data="".join(image_text)
# print(data)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值