使用ddddocr解决某汽车论坛网站字体反爬

查看 183|回复 11
作者:漁滒   
@TOC
链接地址:aHR0cHM6Ly9jbHViLmF1dG9ob21lLmNvbS5jbi9iYnMvdGhyZWFkLzIyMTRiYWZhMDIyMGY4MGQvMTAxMTIzODE0LTEuaHRtbA==

打开网页后,需要获取文章的正文内容,如果使用常规的办法,获取到的是存在乱码的内容

可以看到有少许的文字出现乱码,然后在网页f12 查看

其网页中确实不是常规的文字,而是这个网站的自定义字体。如果直接忽略这个文字,肯定是不可行的,得想办法把图片变成文字。
在源代码中搜索【tff】可以找到字体文件的地址,下载这个字体文件下来

然后在网站  http://font.qqe2.com/index-en.html  中可以进行在线查看

那么尝试先使用python把ttf文件转换为一个一个的图像

在转换的时候需要注意,尽量把需要识别的内容放置在中间,并在在周边留有一定的空白,这样可以提高识别的准确率。
接下来就是要ocr来将图片转换为文字了,这里我是用的是ddddocr,安装相对来说很方便
pip install ddddocr
接着把每一张图片放到ddddocr这个模型去识别,就可以得到每一张图片的文字内容,最后得到一个文件名个文字的映射关系,是用方法也非常简单。
Oocr = ddddocr.DdddOcr()  # 初始化识别模型
text = Oocr.classification(img_bytes=image_io)  # 把图片的字节放到模型中,返回识别的文字
最后再请求一次,然后通过ocr识别得到的映射关系替换自定义字体

可以看到识别非常的准备,完美解决了字体反爬的问题

在这里, 文字

wsddg   


wsddg 发表于 2022-5-5 16:44
如果我从页面里提取的数据是这样的'%uedb8'  ,如何与图片名字映射呢,虽然字母是一样的但是不是一种编码呀 ...

我也是醉了,还是自己在网上搞到一个方法,贴出来给后来人
utf_code[3:] 就是后几个字母,用eval来拼出对应的\u开头的unicode十六进制的串要不还真不好整。。
eval('u\'\\u' + utf_code[3:] + '\'')
不知道渔哥这怎么处理的。。
狂笑一君   


漁滒 发表于 2022-1-18 15:34
贴一贴代码看看

大佬,如果用xpath分析后返回的数据是[]这一类的值是哪里出错了?
代码大概是这样的:
html_text = etrtt.parse('html')
img_url = html_text.xpath('//div//a/@src')
print(img_url)
ccwuax   

每个字都用OCR?
lyghost   

就这一小部分字为啥不做映射呢
jy04468108   

为啥不用百度飞浆ocr?那个效果非常的好!
byyulei   


jy04468108 发表于 2022-1-17 08:53
为啥不用百度飞浆ocr?那个效果非常的好!

百度的慢
pwp   

宇哥现在法帖都是用机器人了,这么多错字,机器人算法有待改进
Rezalt   


jy04468108 发表于 2022-1-17 08:53
为啥不用百度飞浆ocr?那个效果非常的好!

这个直接pip就完事了 飞浆还得部署  两个效果都差不多  当然那个方便那个来呀
elevo   

看着各位讨论的好激烈,有点看不懂啊
您需要登录后才可以回帖 登录 | 立即注册

返回顶部