做網(wǎng)站必須注冊的商標(biāo)網(wǎng)頁生成
一、需求
? ? ? ? OCR算法在處理合同等文件時(shí),會由于印章等遮擋導(dǎo)致文本誤識別。因此在OCR預(yù)處理時(shí),有一個(gè)很重要的步驟是“去除印章”。其中本文主要聚焦在“去除印章”任務(wù)中的數(shù)據(jù)構(gòu)建步驟:“合同+偽印章”的數(shù)據(jù)構(gòu)建。下面直接放幾張批量合成后效果。
二、原理實(shí)現(xiàn)? ? ??
? ? ? ? 合成合同印章的步驟有三個(gè)“隨機(jī)”需要控制。1.印章樣式需要“隨機(jī)”;2.印章“隨機(jī)”角度、位置貼在合同上的;3.合同版面色澤需要“隨機(jī)”。
2.1 隨機(jī)印章樣式
????????我采用的是第三方接口,這里借鑒了這位大佬方法二的思路:【Python】實(shí)現(xiàn)公章自動化生成以及自動蓋章效果-CSDN博客,實(shí)現(xiàn)批量生成。主要的調(diào)用思路是,通過調(diào)用第三方印章生成網(wǎng)址跑批生成。
def func_get_stamp_png(name,use,seal_type):# 定義API的地址out_put_name = os.path.join(seal_output_path,name+".png")url = "http://www.yinzhang8.com.cn/seal/index.php?name={}&str={}&type={}".format(str(name),str(use),str(seal_type))# 發(fā)送HTTP請求response = requests.get(url)assert response.status_code == 200assert 1<=types<=4# 將返回的二進(jìn)制數(shù)據(jù)保存為本地文件with open(out_put_name, "wb") as f:f.write(response.content)
然而第三方網(wǎng)址需要公司名,這里我采用的是faker庫,隨機(jī)生成公司名然后去調(diào)用跑批。代碼如下。這里公司長度一般在[8,11]字長范圍較合適
#批量隨機(jī)生成公司名def get_faker_company(self,n,control_len):# 一般公司名的字長范圍為,限制 control_len = [8,11]from faker import Fakermy_fake = Faker("zh-CN")comany_list = set()while len(comany_list) < n:tmp_company = my_fake.company()if control_len[0]<=len(tmp_company)<=control_len[1]:comany_list.add(tmp_company)return list(comany_list)
?2.2 隨機(jī)印章位置角度
? ? ? ? 在貼上合同的時(shí)候,需要用PIL的paste函數(shù)中的position來實(shí)現(xiàn)控制位置,隨機(jī)角度需要采用PIL.Image庫首先將印章完成旋轉(zhuǎn),然后再貼上去。部分代碼如下。
# 隨機(jī)選擇一個(gè)傾斜角度
angle = random.randint(-15, 15)
watermark = watermark.rotate(angle)
# 計(jì)算印章可以放置的位置范圍
x_range = [int(doc_width * 0.2),int(doc_width * 0.8)]
y_range = [int(doc_height * 0.5),int(doc_height * 0.9)]
# 隨機(jī)選擇一個(gè)位置
x_position = random.randint(x_range[0], x_range[1])
y_position = random.randint(y_range[0], y_range[1])
watermark = watermark.resize((int(doc_width*0.1),int(doc_height*0.1)))
# 將水印添加到基本圖像
base_image.paste(watermark, (x_position,y_position), watermark)
2.3 隨機(jī)合同樣式
????????這部分考慮到,由于是做圖像復(fù)原任務(wù),所以在torch里做比較好,對image和label做同一個(gè)轉(zhuǎn)換,就能保持圖像前后的一致性。
三、秀效果
? ? ? ? 隨便貼張圖,展現(xiàn)效果。全部源碼傳送門:coming soon。