pytesseract 测试获取查策网编码字体
破解反爬案例:https://blog.csdn.net/qq_42988351/article/details/108797567
import numpy
import pytesseract
from fontTools.ttLib import TTFont
from PIL import Image, ImageDraw, ImageFontdef find_coding(special_coding, cn_code_list, font, count=12):"""返回其编码和值的对应关系"""im = Image.new("RGB", (1800, 1000), (255, 255, 255))# 就叫白色画板吧dr = ImageDraw.Draw(im)# 根据count分组:将列表切分成N份,以便于在图片上分行显示array_list = numpy.array_split(cn_code_list, count)for t in range(count):newList = [i.replace("uni", "\\u") for i in array_list[t]]text = (" ".join(newList)).encode('utf-8').decode('unicode_escape')dr.text((70, 70 * (t + 1)), text, font=font, fill="#000000")''''查看全部编码:把后面的代码注释就知道一些特殊的编码了1.打开百度字体编辑器:http://fontstore.baidu.com/static/editor/index.html2.选择woff字体预览3.得到对应的特殊编码print(text)'''# im.save("1.jpg")# im = Image.open("1.jpg") # 可以将图片保存到本地,以便于手动打开图片查看# 识别中文chinese_str = pytesseract.image_to_string(im, lang="chi_sim")# OCR识别出来的字符串有空格换行符chinese_str = chinese_str.replace(" ", "").replace("\n", "")# 查到对应的中文单词匹配字典chinese_coding = dict(zip([i for i in cn_code_list], list(chinese_str)))# 返回对应编码的字典return dict(special_coding, **chinese_coding)def test():all_coding = {'!': '&', '#': '>', '$': 'c', '%': '~', '&': 'H', '(': 'q', ')': 'S', '*': '#', '+': '(', '/': '±','1': '2', '2': '1', '3': '6', '4': '9', '5': '8', '6': '3', '7': '4', '8': '7', '9': '5', '<': ')','=': 'R', '>': '/', '?': 'G', '@': 'h', 'A': 'u', 'B': 'd', 'C': 'v', 'D': 'Q', 'E': 'i', 'F': 'B','G': '&', 'H': 'n', 'I': 'p', 'J': 'I', 'K': 'L', 'L': '%', 'M': '@', 'N': 'Y', 'O': '_', 'P': '^','Q': 'l', 'R': 'a', 'S': 'P', 'T': 't', 'U': 'U', 'V': 'A', 'W': 'M', 'X': 'D', 'Y': 'z', 'Z': 'w','^': 'E', '_': 'g', 'a': 'r', 'b': '=', 'c': 'j', 'd': 'V', 'e': 'N', 'f': 'T', 'g': 'C', 'h': '!','i': 's', 'j': '|', 'k': 'F', 'l': 'b', 'm': 'y', 'n': '?', 'o': 'f', 'p': 'Z', 'q': '<', 'r': 'o','s': 'm', 't': 'W', 'u': 'O', 'v': 'J', 'w': 'e', 'x': 'k', 'y': 'K', 'z': '+', '|': 'x', '~': '*','±': 'X', '〇': '院', '一': '北', '丁': '一', '七': '授', '万': '括', '三': '并', '下': '费', '不': '步', '与': '阳','专': '种', '丙': '行', '业': 'O', '东': '书', '个': '五', '中': '三', '为': '合', '主': '商', '乙': '建', '九': '询','也': '位', '乡': '订', '书': '需', '予': '须', '事': '来', '二': '机', '云': '环', '互': '评', '五': '重', '产': '集','京': '事', '人': '经', '亿': '南', '从': '快', '件': '首', '任': '名', '份': '物', '企': '值', '优': '字', '会': '格','位': '百', '体': '镇', '保': '从', '信': '月', '值': '目', '元': '导', '先': '效', '光': '才', '免': '罪', '全': '准','八': '精', '公': '乡', '六': '展', '册': '企', '再': '贴', '准': '变', '列': '理', '刘': '厂', '创': '东', '利': '王','别': '易', '制': '纸', '务': '辖', '助': '州', '励': '围', '包': '据', '北': '升', '区': '包', '十': '点', '千': '街','升': '息', '华': '证', '单': '先', '南': '路', '厂': '限', '厅': '水', '原': '份', '县': '量', '及': '民', '发': '子','受': '间', '变': '受', '号': '予', '司': '活', '合': '请', '名': '互', '员': '大', '商': '地', '四': '已', '因': '查','园': '会', '围': '拆', '国': '计', '图': '的', '地': '改', '圳': '技', '型': '施', '城': '列', '域': '全', '基': '阅','处': '政', '备': '安', '复': '助', '大': '公', '天': '或', '奖': '单', '委': '产', '子': '秀', '字': '京', '学': '圳','安': '河', '家': '丙', '导': '研', '小': '规', '局': '明', '展': '类', '属': '务', '山': '基', '州': '所', '工': '有','已': '革', '币': '码', '市': '西', '年': '获', '并': '年', '广': '督', '度': '火', '座': '运', '建': '华', '张': '科','当': '等', '得': '李', '微': '验', '心': '造', '快': '件', '总': '高', '息': '除', '或': '维', '所': '程', '才': '知','扶': '设', '批': '型', '技': '广', '报': '收', '拆': '因', '括': '股', '持': '专', '据': '术', '授': '符', '措': '号','提': '得', '收': '额', '改': '励', '政': '海', '效': '门', '数': '部', '文': '学', '新': '区', '施': '园', '日': '给','时': '过', '明': '第', '易': '监', '更': '当', '月': '厅', '有': '究', '服': '济', '未': '错', '术': '持', '机': '服','李': '微', '条': '域', '来': '扶', '查': '龙', '标': '创', '栋': '注', '格': '小', '步': '备', '民': '通', '水': '能','河': '个', '法': '条', '注': '刘', '活': '处', '济': '座', '海': '未', '深': '原', '湖': '四', '源': '日', '火': '册','点': '二', '物': '为', '犯': '电', '王': '时', '环': '体', '理': '张', '甲': '云', '申': '复', '电': '度', '百': '质','的': '山', '监': '任', '目': '管', '省': '批', '督': '下', '知': '标', '码': '金', '研': '还', '秀': '员', '种': '优','科': '提', '积': '深', '称': '及', '程': '配', '究': '与', '立': '范', '符': '栋', '第': '业', '等': '进', '策': '心','算': '国', '管': '县', '类': '源', '精': '项', '纸': '乙', '经': '新', '给': '光', '维': '犯', '网': '市', '罪': '人','者': '申', '联': '委', '股': '报', '能': '丁', '自': '补', '范': '甲', '获': '发', '行': '者', '街': '道', '补': '自','西': '九', '规': '元', '计': '十', '订': '立', '设': '工', '证': '别', '评': '网', '询': '七', '请': '算', '质': '主','贴': '总', '贸': '湖', '费': '家', '资': '奖', '路': '数', '辖': '干', '过': '更', '运': '法', '还': '违', '进': '万','违': '文', '通': '再', '造': '币', '道': '称', '部': '措', '配': '资', '重': '图', '量': '六', '金': '保', '错': '利','镇': '城', '门': '属', '间': '中', '阅': '亿', '阳': '联', '限': '积', '院': '局', '除': '贸', '集': '信', '需': '也','革': '策', '项': '不', '须': '制', '额': '司', '首': '免', '验': '省', '高': '天', '龙': '八'}chace_str = '者合册第应具步以督法快:'result = ''.join([all_coding.get(each, each) for each in chace_str]) if chace_str else ''print(f'转换前:({chace_str}), 转换后:({result})')if __name__ == '__main__':fontPath = r'C:\Users\lenovo\Desktop\ccw.ttf'font_file = TTFont(fontPath)# 设置字体大小font = ImageFont.truetype(fontPath, 45)# 1 全部编码codeList = font_file.getGlyphOrder()# 1.1 中文编码cn_code_list = [i for i in codeList if 'uni' in i]# 1.2 其他一些编码对应字典值special_coding = {'.notdef': ' ', 'five': '5', 'nine': '9', 'seven': '7', 'eight': '8', 'three': '3', 'four': '4','ampersand': '&', 'six': '6', 'two': '1', 'plusminus': '±', 'one.001': '2', 'asterisk': '*','asciitilde': '~', 'greater': '>', 'numbersign': '#', 'parenleft': '(', 'parenright': ')','slash': '/', 'equal': '=', 'dollar': '&', 'exclam': '!', 'bar': '|', 'percent': '%', 'at': '@','question': '?', 'underscore': '_', 'asciicircum': '^', 'less': '<', 'plus': '+'}# 1.3 查找编码的对应字典值special_and_chinese_coding = find_coding(special_coding, cn_code_list, font)# print(special_and_chinese_coding)# 1.4 全部编码集all_coding = {}sxs = font_file['cmap'].getBestCmap().items()for k, v in sxs:print(f'map(code="{k}" name="{v}") | key:{chr(k)} Value:{special_and_chinese_coding.get(v, v)}')all_coding[chr(k)] = special_and_chinese_coding.get(v, v)# print(all_coding)# test() # 测试
输出:
map(code="35774" name="uni8BBE") | key:设 Value:工
map(code="35777" name="uni8BC1") | key:证 Value:别
map(code="35780" name="uni8BC4") | key:评 Value:网
map(code="35810" name="uni8BE2") | key:询 Value:七
map(code="35831" name="uni8BF7") | key:请 Value:算
map(code="36136" name="uni8D28") | key:质 Value:主
map(code="36148" name="uni8D34") | key:贴 Value:总
map(code="36152" name="uni8D38") | key:贸 Value:湖
map(code="36153" name="uni8D39") | key:费 Value:家
map(code="36164" name="uni8D44") | key:资 Value:奖
map(code="36335" name="uni8DEF") | key:路 Value:数
map(code="36758" name="uni8F96") | key:辖 Value:干
map(code="36807" name="uni8FC7") | key:过 Value:更
map(code="36816" name="uni8FD0") | key:运 Value:法
map(code="36824" name="uni8FD8") | key:还 Value:违
map(code="36827" name="uni8FDB") | key:进 Value:万
map(code="36829" name="uni8FDD") | key:违 Value:文
map(code="36890" name="uni901A") | key:通 Value:再
map(code="36896" name="uni9020") | key:造 Value:币
map(code="36947" name="uni9053") | key:道 Value:称
map(code="37096" name="uni90E8") | key:部 Value:措
map(code="37197" name="uni914D") | key:配 Value:资
map(code="37325" name="uni91CD") | key:重 Value:图
map(code="37327" name="uni91CF") | key:量 Value:六
map(code="37329" name="uni91D1") | key:金 Value:保
map(code="38169" name="uni9519") | key:错 Value:利
map(code="38215" name="uni9547") | key:镇 Value:城
map(code="38376" name="uni95E8") | key:门 Value:属
map(code="38388" name="uni95F4") | key:间 Value:中
map(code="38405" name="uni9605") | key:阅 Value:亿
map(code="38451" name="uni9633") | key:阳 Value:联
map(code="38480" name="uni9650") | key:限 Value:积
map(code="38498" name="uni9662") | key:院 Value:局
map(code="38500" name="uni9664") | key:除 Value:贸
map(code="38598" name="uni96C6") | key:集 Value:信
map(code="38656" name="uni9700") | key:需 Value:也
map(code="38761" name="uni9769") | key:革 Value:策
map(code="39033" name="uni9879") | key:项 Value:不
map(code="39035" name="uni987B") | key:须 Value:制
map(code="39069" name="uni989D") | key:额 Value:司
map(code="39318" name="uni9996") | key:首 Value:免
map(code="39564" name="uni9A8C") | key:验 Value:省
map(code="39640" name="uni9AD8") | key:高 Value:天
map(code="40857" name="uni9F99") | key:龙 Value:八Process finished with exit code 0
pytesseract 测试获取查策网编码字体相关推荐
- 应用计算机测定线性电阻电路图和实物图,中国大学MOOC电子线路设计、测试与实验二网课答案...
中国大学MOOC电子线路设计.测试与实验二网课答案 字体大小:大 | 中 | 小 2020-04-26 19:57 阅读(1017) 分类: 中国大学MOOC电子线路设计.测试与实验二网课答案 打开右 ...
- 渗透测试入门5之内网信息搜集
渗透测试入门5之内网信息搜集 本机信息搜集 1.用户列表 windows用户列表 分析邮件用户,内网[域]邮件用户,通常就是内网[域]用户 2.进程列表 分析杀毒软件/安全监控工具等 邮件客户端 VP ...
- 型人格 disc测试_什么是孤独型人格,如何测试筛查孤独型人格?
一. 什么是孤独型人格 孤独型人格是一种人格异常.孤独型人格非常的敏感,内心极度紧张矛盾,极易产生羞愧和耻辱感.有些妄自尊大.桀骜不驯.性格冷漠孤僻,没有稳定的社会关系,很少有朋友,但是对他人的评价又 ...
- iOS 获取手机外网IP地址的成功与失败
一.获取手机外网IP(公网IP) 网上找了很久获取外网IP的方法,很多访问网址已经不能用了,能用的主要有2个,但是获取到的IP地址不同,下面详细介绍. 首推方法1:此方法采用的淘宝网址,获取的到IP与 ...
- 传奇网页服务器测试服,测试传奇游戏服务器网速的一些方法
测试传奇游戏服务器网速的一些方法 本文出处:网游动力作者:本站发布时间:2018-08-20阅读次数: 前几天站长跟一些开传奇sf朋友们聊到服务器,说了配置.防护还有是速度等方面的内容,如果查看服务器 ...
- linux命令获取本机外网公网ip地址,java程序获取本机外网公网ip地址 代码
linux命令获取本机外网ip地址 1 直接返回ip 最快 稳定 curl ns1.dnspod.net:6666 curl whatismyip.akamai.com curl icanhazip. ...
- 鲁大师html5测试网站,鲁大师测网速(鲁大师网速测试在哪里)
鲁大师主要测的是硬件性能,你可以用360安全卫士去测网速,打开安全卫士,右下角就有看待测速器,点那个. 目前鲁大师没有测试网速的功能,但是360安全卫士中有测试网速功能(鲁大师现在是360旗下的产品. ...
- Java爬虫 获取中国天气网7日天气预报
Java爬虫 获取中国天气网7日天气预报 前言 工具准备 爬取数据 获取日期和星期 获取天气描述 获取温度范围 获取风向及风力 完整代码 引用 前言 项目需要获取7日天气预报,免费好用的接口寻觅不到, ...
- java 获取已有字体,java获取本机全部可用字体
java获取本机所有可用字体 //just for fun,那个28个字母的函数满满都是恶心 import java.awt.GraphicsEnvironment ; class Tester { ...
最新文章
- NS3_Tutorial 中文版: 第一章 简介 第二章 资源
- p点到(a,b)点两所在直线的垂点坐标及p点是否在(a,b)两点所在直线上
- python中如何调用java_在Python程序中调用Java代码的实现
- Kubernetes(五) - Service
- Qt 关于定时器实用的总结
- 屯题 (bestcoder #62~#75)
- myelcipse和maven搭建项目
- “ 我亦想望,如池鱼悠悠 ... “
- Git 使用,命令说明
- Python编程从入门到实践~文件写入
- java freemarker_Java: FreeMarker的配置和使用
- 中文信息处理(六)—— 神经语言模型与词表示(word2vec)
- java——base64 加密和解密
- 毛星云opencv第二章总结
- 合并两个有序数组——C语言
- LSI Logic 1068 SAS 磁盘阵列卡配置教程
- 发展农村数字普惠金融的问题及对策分析
- dos命令之 assoc 用法详解
- 红米k30s至尊纪念版参数配置
- 上半年、你学到了什么?
热门文章
- java smack 例子_关于JAVA利用smack连接openfire的jar依赖问题
- 虚拟机由于硬盘存储空间过满导致启动异常+虚拟机扩容
- Qt QNetworkAccessManager 下载url
- Oracle 错误总结及问题解决 OR
- 如何关闭iPhone浏览器自动将数字识别为电话号码
- Android的布局管理--表格布局
- 一行代码搞定Android弧形卫星动画菜单(附Demo)
- 达芬奇机器人变身‘模仿达人’,通过看视频模仿手术缝合、穿针、打结等动作...
- 阿里云服务器配置(一)基础
- Socket通信流程和套接字作用