python-capchar

目标:CMDST价格监测

周期:动手半个月,构思一个月

内容:3PL快递价格大区仓到3325个地区的1kg运价

数据来源:物流企业(EMS、顺丰、宅急送、韵达、圆通、中通)官方网站价格数据,默认重量1公斤

特殊处理:官方网站无报价地区,按照同省份最高价计算

工具:PIL + selenium + ocropus(仅支持ubuntu x64环境)

样本获取

  1. class somcode(object):
  2.     def __init__(self, url, fname, pieces):
  3.         self.url = url
  4.         self.fname = fname
  5.         self.pieces = pieces
  6.     def download(self):
  7.         map(lambda i:file('./' + self.fname + "/%04d.aspx" % random.randrange(10000), "wb").write(urllib.urlopen(url).read()), range(self.pieces))

样本图形处理

验证码链接一直在改变,使用时需要截屏获取验证码,如果用urllib.urlopen(url).read(),图形不一致。

通过PIL预处理图片,可以提高识别效率

from PIL import Image

image_file = 'screenshot.png'

png_file = 'captcha.png'

img = Image.open(image_file)

box = (leftx,lefty, leftx+width, lefty+height)

img = img.crop(box)

img0 = img.convert("L")

img1 = img0.point(lambda i: 0 if i < 120 else 255)

img1.save(png_file)

ocropus-gtedit的校对

convert *.aspx a.png

ocropus-gtedit html *.png

ocropus-gtedit extract correction.html -p 000

ocropus-rtrain的训练

ocropus-rtrain 000/????/*.png -o 0

利用LSTM,默认训练1百万次,一般7万可以很精确了,.没一千次训练生成.pyrnn.gz,CPU需求很高。

输出结果

  1. import os
  2. f=os.popen("ocropus-rpred -Q 4 -m zhongtong.pyrnn.gz captcha.png")
  3. tt = f.read()

其实除了宅急送和顺丰,其他3PL均为一省一价。