利用神经网络识别12306验证码——(三)一些预处理工作

之前第一篇博客爬取的验证码图片,对应的文件夹名字是中文,但是目前诸如tensorflow之类的训练框架对中文路径读取有很多问题,所以在这里把文件夹的名字转换成英文,当然你也可以转换成其他非中文的形式,只要保存好相应的转换对应文件,以输出正确的结果。
在这里利用百度翻译来获取相应的英文名字,还是采用selenium来实现,练习练习爬虫,程序如下。

from selenium import webdriver
import time
import json
import os

#读取中文名字
with open('picture_name.txt', 'r', encoding='utf-8') as f:
    keywords = f.read().split('\n')

trans_res1 = {}  #保存翻译结果,中译英,字典形式
trans_res2 = {}  #英译中
browser = webdriver.Chrome()
browser.get('https://fanyi.baidu.com')
time.sleep(0.5)
browser.find_element_by_class_name('desktop-guide-close').click()
for word in keywords:
    input_btn = browser.find_element_by_id('baidu_translate_input')
    input_btn.clear()
    input_btn.send_keys(word)
    browser.find_element_by_id('translate-button').click()
    time.sleep(1)
    res = browser.find_element_by_class_name('ordinary-output.target-output.clearfix').text
    res = res.replace(" ", "")
    trans_res1[word] = res
    trans_res2[res] = word
    print(word, res)

json_str1 = json.dumps((trans_res1))
with open('ch2en.json', 'w') as f:   #保存为json文件,中译英文件
    f.write(json_str1)
print(trans_res1)

json_str2 = json.dumps((trans_res2))
with open('en2ch.json', 'w') as f:   #保存为json文件,英译中文件
    f.write(json_str2)
print(trans_res2)

得到翻译结果后,就可以对文件夹进行重命名了,程序如下。

import os
import json

items = os.listdir('D:/cap_data')  #这是我存储图片的路径,根据自己的路径修改

with open('ch2en.json', 'r') as f:  #加载中译英文件
    dic = json.load(f)
for item in items:
    os.rename('D:/cap_data/'+item, 'D:/cap_data/' + dic[item])

完成重命名工作后,就可以建立labels.csv文件了,也就是标签文件,后面划分训练集、验证集时需要用。程序如下。

import os
import pandas as pd

items = os.listdir('D:/cap_data')
lst = []
for item in items:
    pics = os.listdir('D:/cap_data/'+item)
    for pic in pics:
        lst.append({'id':pic.split['.'][0], 'name':item})
        
data = pd.DataFrame(lst)
data.to_csv('D:/cap_data/labels.csv', index=False)

以上完成了对图片验证码的预处理工作,接下来进行文字部分的处理。在上一篇博客中最后提到需要进行标注,我在标注的时候依然采用的是中文名字标注,所以依然需要进行中译英的操作;同时一并得到labels.csv文件。因为所有文字图片都在一个文件夹里,所以处理上与前面略有不同,程序如下。

import os
import json
import pandas as pd
import shutil

path = 'D:/text_captcha/'
with open('ch2en.json', 'r') as f:  #加载中译英文件
    dic = json.load(f)
    
items = os.listdir(path)
lst = []
count = 1354558   #编号,作为新id,可根据自己喜好更改
for item in items:
    ch_name = item.split(' ')[0]
    new_name = 'z' + str(count)
    lst.append({'id':new_name, 'name':dic[ch_name]})
    os.rename(path+item, path+new_name+'.jpg')
    count += 1

#创建一个新文件夹,将处理后的数据移动到这个文件夹下,方便后续训练集和验证集的划分
new_path = 'D:/data_text/'
os.mkdir(new_path)
shutil.move(path, new_path)

data = pd.DataFrame(lst)    #标签文件也保存到新的文件夹下
data.to_csv(new_path+'labels.csv', index=False)

效果图在这里插入图片描述
这些工作处理完之后,就可以进行训练集和验证集的划分,将在下一篇博客中出现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值