营业执照数据生成

import pandas as pd
from PIL import Image
from PIL import ImageFilter
from PIL import ImageEnhance
import cv2
from PIL import ImageDraw, ImageFont
from PIL._imaging import font

import csv
import codecs
#两个函数用于保存需要的坐标点
# def save_to(path,name):
#     # file_csv =open(path,"a+",newline='',encoding="utf-8")
#     file_csv = codecs.open(path, 'a+', 'utf-8')  # 追加
#     # writer=csv.writer(file_csv)
#     writer = csv.writer(file_csv, delimiter=',', quotechar=',', quoting=csv.QUOTE_MINIMAL)
#     for data in name:
#         writer.writerow(data)

def save_to(name,data):
    f = open(name,"a+",newline='',encoding='utf-8')
    csv_writer = csv.writer(f)
    csv_writer.writerow(data)
    f.close()

data=pd.read_csv('E:\qichacha\data\qichacha.csv',encoding='gbk')
#字体大小
fnt = ImageFont.truetype(r'E:\qichacha\gen_data\WeiRuanYaHei-1.ttf', 18)
fnt2 = ImageFont.truetype(r'E:\qichacha\gen_data\WeiRuanYaHei-1.ttf', 22)
fnt3 = ImageFont.truetype(r'E:\qichacha\gen_data\WeiRuanYaHei-1.ttf', 24)
fnt4 = ImageFont.truetype(r'E:\qichacha\gen_data\WeiRuanYaHei-1.ttf', 20)
# 按下列方式计算其余坐标
# [宽,高,宽+w,高,宽,高+h,宽+w,高+h]
for i in range(0,len(data)-1):
    im = Image.open('E:\qichacha\gen_data\model.jpg')
    draw = ImageDraw.Draw(im)
    #draw.text(左上坐标, 书写内容, fill='颜色', font=字体)
    draw.text((637, 566), data.iloc[i]['信用代码'], fill='black', font=fnt)  # 信用代码
    w, h = fnt.getsize(data.iloc[i]['信用代码'])
    # [宽,高,宽+w,高,宽,高+h,宽+w,高+h]
    a=[637,566,637+w,566,637,566+h,637+w,566+h,data.iloc[i]['信用代码']]
    #保存两种格式为后面使用方便
    save_to("E:\qichacha\data\zuobiao\\txt\{}.txt".format(i), a)
    save_to("E:\qichacha\data\zuobiao\\csv\{}.csv".format(i), a)
    loc1 = len(data.iloc[i]['登记机关'])
    for k in range(0,int(loc1/8)+1):#字体超过8个字,就换行
        try:
            draw.text((660, 1222+k*30), data.iloc[i]['登记机关'][k*8:k*8+8], fill='black', font=fnt3)  # 登记机关
            w, h = fnt3.getsize(data.iloc[i]['登记机关'][k*8:k*8+8])
            # [宽,高,宽+w,高,宽,高+h,宽+w,高+h]
            a = [660,1222+(k*30),660+w,1222+(k*30),660, 1222+(k*30)+h, 660+w,1222+(k*30)+h,data.iloc[i]['登记机关'][k*8:k*8+8]]
            save_to("E:\qichacha\data\zuobiao\\txt\{}.txt".format(i), a)
            save_to("E:\qichacha\data\zuobiao\\csv\{}.csv".format(i), a)
        except:
            pass
        if k==4:#超过5行就不显示,可以调整
            break
    loc2 = len(data.iloc[i]['注册地址'])
    for j,m in enumerate(['企业名称','类型','注册地址','法定代表人','注册资本','成立日期','营业期限']):
        # print(m)
        if m=="注册地址":#防止字数超过图片本身
                draw.text((330, 635 + j * 40), data.iloc[i][m][0:30], fill='black', font=fnt2)
                w, h = fnt2.getsize(data.iloc[i][m][0:30])
                # [宽,高,宽+w,高,宽,高+h,宽+w,高+h]
                a = [330, 635 + (j * 40), 330 + w, 635 + (j * 40), 330, 635 + (j * 40) + h, 330 + w, 635 + (j * 40) + h,data.iloc[i][m]]
                save_to("E:\qichacha\data\zuobiao\\txt\{}.txt".format(i), a)
                save_to("E:\qichacha\data\zuobiao\\csv\{}.csv".format(i), a)
        else:
            draw.text((330, 635+j*40),data.iloc[i][m], fill='black', font=fnt2)  # 企业名称,类型,注册地址,法定代表人,注册资本,成立日期,营业期限
            w, h = fnt2.getsize(data.iloc[i][m])
            # [宽,高,宽+w,高,宽,高+h,宽+w,高+h]
            a = [330, 635+(j*40), 330 + w, 635+(j*40), 330, 635 + (j*40) + h, 330 + w, 635 + (j*40)+ h,data.iloc[i][m]]
            save_to("E:\qichacha\data\zuobiao\\txt\{}.txt".format(i), a)
            save_to("E:\qichacha\data\zuobiao\\csv\{}.csv".format(i), a)

    loc = len(data.iloc[i]['经营范围'])
    for n in range(0,int(loc/30)+1):
        try:
            draw.text((330, 920 +n*30),data.iloc[i]['经营范围'][n*30:n*30+30], fill='black', font=fnt4)  # 经营范围
            w, h = fnt4.getsize(data.iloc[i]['经营范围'][n*30:n*30+30])
            # [宽,高,宽+w,高,宽,高+h,宽+w,高+h]
            a = [330, 920 +(n*30), 330 + w, 920 +(n*30), 330, 920 + (n*30) + h, 330 + w, 920 + (n*30) + h,data.iloc[i]['经营范围'][n * 30:n * 30 + 30]]
            save_to("E:\qichacha\data\zuobiao\\txt\{}.txt".format(i), a)
            save_to("E:\qichacha\data\zuobiao\\csv\{}.csv".format(i), a)
        except:
            pass
        if n==5:
            draw.text((330, 920 + (n+1) * 30), u'.............', fill='black', font=fnt4)#多余6行就写省略号
            w, h = fnt4.getsize(".............")
            a = [330, 920 +((n+1)*30), 330 + w, 920 + ((n+1)*30), 330, 920 + ((n+1)*30)+ h, 330 + w, 920 + ((n+1)*30) + h,"............."]
            save_to("E:\qichacha\data\zuobiao\\txt\{}.txt".format(i), a)
            save_to("E:\qichacha\data\zuobiao\\csv\{}.csv".format(i), a)
            break

    print("成功--{}".format(data.iloc[i]['企业名称']))
    im.save('E:\qichacha\img\yingye\{}.jpg'.format(data.loc[i]['信用代码']))#保存


import os
import cv2
import numpy as np
n=0
a=0
#图片的融合。保存用循环数字。
path = r"E:\qichacha\background"
path1=r"E:\qichacha\img\yingye"
for i in os.listdir(path):#生成的营业执照路径
    back = os.path.join(path, i)
    image = cv2.imread(back)
    k = 0
    for j in os.listdir(path1):#营业执照
        back1= os.path.join(path1, j)
        logo = cv2.imread(back1)
        # num = (logo.width, logo.height)
        height, width = logo.shape[0:2]#获取宽高
        #图片按宽高缩放cv2.resize(图片, 缩放大小)
        image_1=cv2.resize(image, (width, height))
        logo_1=cv2.resize(logo, (width, height))
        #融合图片cv2.addWeighted(主图、背景图, 权重, 辅图, 权重, 0)
        image_copy = cv2.addWeighted(logo_1, 0.8, image_1, 0.2, 0)
        cv2.imwrite("E:\qichacha\img\\beijing\{}.jpg".format(a), image_copy)
        # cv2.waitKey(0)
        # cv2.destroyAllWindows()
        print("成功--{}{}".format(data.iloc[k]['企业名称'],n))
        k += 1
        a+=1
    n+=1
#保存图片,用信用代码,前面加0,1,2区分不同的噪声
# n=0
# path = r"E:\qichacha\background"
# path1=r"E:\qichacha\img\yingye"
# for i in os.listdir(path):#背景图
#     back = os.path.join(path, i)
#     image = cv2.imread(back)
#     k = 0
#     for j in os.listdir(path1):#营业执照
#         back1= os.path.join(path1, j)
#         logo = cv2.imread(back1)
#         # num = (logo.width, logo.height)
#         height, width = logo.shape[0:2]
#         image_1=cv2.resize(image, (width, height))
#         logo_1=cv2.resize(logo, (width, height))
#         image_copy = cv2.addWeighted(logo_1, 0.6, image_1, 0.4, 0)
#         cv2.imencode('.jpg', image_copy)[1].tofile("E:\qichacha\img\\beijing\{}{}".format(n,j))
#         cv2.waitKey(0)
#         cv2.destroyAllWindows()
#         print("成功--{}{}".format(n,j))
#         k += 1
#     n+=1

#单张图片的融合
# image=cv2.imread(r'E:\qichacha\background\\1.jpg')#背景图
# logo = cv2.imread(r'E:\qichacha\img\yingye\\91110000MA00GXCN9M.jpg')#生成的营业执照
# # 图像融合
# height,width=logo.shape[0:2]
# # print(width,height)
# # a=cv2.resize(image, (width, height))
# image_1=cv2.resize(image, (width, height))
# logo_1=cv2.resize(logo, (width, height))
# combine = cv2.addWeighted(logo_1, 0.9, image_1, 0.1,0)
# cv2.imshow('s',combine)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
# cv2.imwrite("E:\qichacha\img\\beijing\j2.jpg", combine)#保存英文名字
# cv2.imencode('.jpg', image_copy)[1].tofile("E:\qichacha\img\\beijing\{}{}.jpg".format(data.iloc[k]['企业名称'], n))#保存中文名


#单张营业执照的生成
# im = Image.open('E:\qichacha\gen_data\model.jpg')
# draw = ImageDraw.Draw(im)
# draw.text((330,633), data.iloc[118,1], fill='black', font=fnt2)#企业名称
# w, h = fnt2.getsize(data.iloc[118,1])#宽高
# print(w,h)
# draw.text((330,675), data.iloc[118,6], fill='black', font=fnt2)#企业类型
# draw.text((330,715), data.iloc[118,9], fill='black', font=fnt2)#注册地址
# draw.text((330,755), data.iloc[118,2], fill='black', font=fnt2)#法定代表人
# draw.text((330,800), data.iloc[118,4], fill='black', font=fnt2)#注册资本
# draw.text((330,840), data.iloc[118,3], fill='black', font=fnt2)#成立日期
# draw.text((330,880), data.iloc[118,7], fill='black', font=fnt2)#营业期限

# loc=len(data.iloc[118,10])
# for i in range(0,int(loc/30)):
#     try:
#         draw.text((330,920+i*30), data.iloc[117,10][i*30:i*30+31], fill='black', font=fnt4)#经营范围
#     except:
#         pass
#     if i==5:
#         draw.text((330, 920 + (i+1) * 30), u'.............', fill='black', font=fnt4)
#         break
#
# draw.text((637,566), data.iloc[118,0], fill='black', font=fnt)#信用代码
# draw.text((650,1222), data.iloc[118,8], fill='black', font=fnt3)#登记机关
# im.show()

# image=Image.open(r'E:\qichacha\background\1.jpg')#背景图
# logo = Image.open(r'E:\qichacha\img\营业执照\安徽淘宝村实业集团有限公司.jpg')#生成的营业执照
# num=(image.width,image.height)
# logo.thumbnail(num)#缩小营业执照,背景图大小
# image_copy=image.copy()#复制图像背景图
# x = int(random.randint(0,  (image_copy.width- logo.width)+ 1))#随机生成背景图和营业执照宽的差值之间的数值
# y= int(random.randint(0, (image_copy.height - logo.height) + 1))#随机生成背景图和营业执照高的差值之间的数值
# image_copy.paste(logo,(x,y))  #将营业执照放到指定粘贴位置(左上角坐标)
# resize(temImage, dstImage2, Size(temImage.cols * 2, temImage.rows * 2), 0, 0, INTER_LINEAR)
# plt.imshow(image_copy)
# plt.show()
# image_copy.save('E:\qichacha\img\背景营业执照\j2.jpg')#保存
数据:csv文件:https://download.csdn.net/download/yangzheng_520/21979543

模板:https://download.csdn.net/download/yangzheng_520/21979571

不行的按照前面文章自己爬取

关注一下,谢谢

好的,以下是一个示例的Java程序,可以方便地生成A表的假数据: ```java import java.util.Date; import java.util.Random; public class DataGenerator { private static final int NUM_ROWS = 100; // 生成100行数据 private static final String[] CUST_NAMES = {"张三", "李四", "王五", "赵六", "钱七", "孙八", "周九", "吴十"}; private static final String[] QUALIFICATION_NAMES = {"工商注册证", "税务登记证", "组织机构代码证", "营业执照", "法人身份证"}; private static final String[] CUST_FROMS = {"淘宝", "天猫", "京东", "苏宁易购", "唯品会", "拼多多"}; private static final String[] ALICOM_INDUSTRIES = {"电商", "餐饮", "旅游", "教育", "医疗", "房地产"}; private static final String[] ALICOM_CUST_TYPES = {"企业", "个体工商户", "个人"}; private static final String[] REMARKS = {"无", "一般", "重要", "紧急"}; private static final String[] ORGANIZATION_CODES = {"123456", "654321", "234567", "876543", "345678", "987654"}; private static final Random random = new Random(); public static void main(String[] args) { for (int i = 0; i < NUM_ROWS; i++) { Date now = new Date(); Date gmtCreate = new Date(now.getTime() - random.nextInt(1000000) * 1000L); // 随机生成过去的时间 Date gmtModified = new Date(now.getTime() - random.nextInt(10000) * 1000L); // 随机生成最近的时间 long qualificationId = random.nextInt(100000) + 1; // 从1到100000随机生成qualification_id String partnerId = String.format("%06d", random.nextInt(1000000)); // 随机生成6位数字的partner_id String custName = CUST_NAMES[random.nextInt(CUST_NAMES.length)]; String qualificationName = QUALIFICATION_NAMES[random.nextInt(QUALIFICATION_NAMES.length)]; String custFrom = CUST_FROMS[random.nextInt(CUST_FROMS.length)]; String custId = String.format("%012d", random.nextInt(1000000000000L)); // 随机生成12位数字的cust_id String aliUid = String.format("%08d", random.nextInt(100000000)); // 随机生成8位数字的ali_uid String aliAccount = "ali_" + String.format("%06d", random.nextInt(1000000)); // 随机生成ali_后面跟6位数字的ali_account Date aliCreateTime = new Date(now.getTime() - random.nextInt(1000000) * 1000L); // 随机生成过去的时间 String aliCid = String.format("%08d", random.nextInt(100000000)); // 随机生成8位数字的ali_cid String alicomHaltStatus = random.nextInt(2) == 0 ? "正常" : "停用"; // 随机生成alicon_halt_status String cbmWorkId = "cbm_" + String.format("%06d", random.nextInt(1000000)); // 随机生成cbm_后面跟6位数字的cbm_work_id String anyParam = "param_" + String.format("%06d", random.nextInt(1000000)); // 随机生成param_后面跟6位数字的any_param int illegalCaseCount = random.nextInt(10); // 随机生成0到9之间的数字 String smsHaltStatus = random.nextInt(2) == 0 ? "正常" : "停用"; // 随机生成sms_halt_status String voiceHaltStatus = random.nextInt(2) == 0 ? "正常" : "停用"; // 随机生成voice_halt_status Date alicomCreateTime = new Date(now.getTime() - random.nextInt(1000000) * 1000L); // 随机生成过去的时间 String alicomIndustry = ALICOM_INDUSTRIES[random.nextInt(ALICOM_INDUSTRIES.length)]; String alicomCustType = ALICOM_CUST_TYPES[random.nextInt(ALICOM_CUST_TYPES.length)]; String remark = REMARKS[random.nextInt(REMARKS.length)]; String freeSignFlag = random.nextInt(2) == 0 ? "Y" : "N"; // 随机生成Y或N的free_sign_flag String organizationCode = ORGANIZATION_CODES[random.nextInt(ORGANIZATION_CODES.length)]; String dataType = "A表"; int smsIllegalCount = random.nextInt(10); // 随机生成0到9之间的数字 int voiceIllegalCount = random.nextInt(10); // 随机生成0到9之间的数字 String activeFlag = random.nextInt(2) == 0 ? "Y" : "N"; // 随机生成Y或N的active_flag System.out.printf("%s, %s, %d, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %d, %s, %s, %s, %s, %s, %s, %s, %s, %s, %d, %d, %s\n", gmtCreate, gmtModified, qualificationId, partnerId, custName, qualificationName, custFrom, custId, aliUid, aliAccount, aliCreateTime, aliCid, alicomHaltStatus, cbmWorkId, anyParam, illegalCaseCount, smsHaltStatus, voiceHaltStatus, alicomCreateTime, alicomIndustry, alicomCustType, remark, freeSignFlag, organizationCode, dataType, smsIllegalCount, voiceIllegalCount, activeFlag); } } } ``` 该程序使用Java的Random类生成数据,其中包括: - gmt_create和gmt_modified字段:随机生成过去的时间和最近的时间 - qualification_id字段:从1到100000随机生成qualification_id - partner_id字段:随机生成6位数字的partner_id - cust_name字段:从预定义的名字列表中随机选择 - qualification_name字段:从预定义的资质名称列表中随机选择 - cust_from字段:从预定义的来源列表中随机选择 - cust_id字段:随机生成12位数字的cust_id - ali_uid字段:随机生成8位数字的ali_uid - ali_account字段:随机生成ali_后面跟6位数字的ali_account - ali_create_time字段:随机生成过去的时间 - ali_cid字段:随机生成8位数字的ali_cid - alicom_halt_status字段:随机生成"正常"或"停用" - cbm_work_id字段:随机生成cbm_后面跟6位数字的cbm_work_id - any_param字段:随机生成param_后面跟6位数字的any_param - illegal_case_count字段:随机生成0到9之间的数字 - sms_halt_status字段:随机生成"正常"或"停用" - voice_halt_status字段:随机生成"正常"或"停用" - alicom_create_time字段:随机生成过去的时间 - alicom_industry字段:从预定义的行业列表中随机选择 - alicom_cust_type字段:从预定义的客户类型列表中随机选择 - remark字段:从预定义的备注列表中随机选择 - free_sign_flag字段:随机生成"Y"或"N" - organization_code字段:从预定义的组织机构代码列表中随机选择 - data_type字段:固定为"A表" - sms_illegal_count字段:随机生成0到9之间的数字 - voice_illegal_count字段:随机生成0到9之间的数字 - active_flag字段:随机生成"Y"或"N" 你可以根据自己的需求修改或扩展这个程序来生成更多的假数据
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值