开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 10857|回复: 83
收起左侧

[易源码分享] 调用TX开放AI实现截图翻译,支持内容覆盖

[复制链接]
结帖率:100% (6/6)
发表于 2019-5-16 15:49:34 | 显示全部楼层 |阅读模式   江苏省苏州市
分享源码
界面截图:
是否带模块: 调用了模块
备注说明: -
成品效果                                                                                                
11.jpg
10.jpg
战前准备:                                                                     
                           
·拿到源码后第一件事情要干什么?!当时是先去腾讯AI开放平台申请一个AppKey咯!我才不会直接给你们用我的,哼!( ̄へ ̄)
·什么(゚Д゚≡゚д゚)!? 你问为什么要用腾讯的,因为~~它免费啊!还有什么比这更让人心动的!
02.jpg
·好啦,下面让我们一起分析分析代码是怎么写的吧(=・ω・=)

OCR解析:                                                                                                


·图像OCR识别以及翻译等完全交给腾讯AI就可以了,我们只需要知道如何去调用它,唉嘿嘿
·首先申请签名授权与百度的不同,这个需要自己去计算sign
>签名算法:
·1.计算步骤
·用于计算签名的参数在不同接口之间会有差异,但算法过程固定如下4个步骤。
·①将<key, value>请求参数对按key进行字典升序排序,得到有序的参数对列表N
·②将列表N中的参数对按URL键值对的格式拼接成字符串,得到字符串T(如:key1=value1&key2=value2),URL键值拼接过程value部分需要URL编码,URL编码算法用大写字母,例如%E8,而不是小写%e8
·③将应用密钥以app_key为键名,组成URL键值拼接到字符串T末尾,得到字符串S(如:key1=value1&key2=value2&app_key=密钥)
·④对字符串S进行MD5运算,将得到的MD5值所有字符转换成大写,得到接口请求签名
·2.注意事项
·不同接口要求的参数对不一样,计算签名使用的参数对也不一样
·参数名区分大小写,参数值为空不参与签名
·URL键值拼接过程value部分需要URL编码
·签名有效期5分钟,需要请求接口时刻实时计算签名信息
·3.参考代码
·这里官方给的是PHP代码,一些看不懂的小火鸡就蒙逼了,这都是啥??莫急,来一条一条慢慢看


function getReqSign($params /* 关联数组 */, $appkey /* 字符串*/)
定义一个名为getReqSign的子程序,里面有两个参数params[关联数组类型]、appkey[文本型]
这里有一个问题,易语言是没有关联数组这样形式的变量。但是我们可以用其他方法达到类似的效果,比如自定义一个数据类型
03.jpg
04.jpg
这样就可以做到类似的效果了,但牵一发而动全身,这里变了,那么其他地方也要有相应的改变,我们继续往下看。
{
    ksort($params);
    //以升序排序数组,易语言有命令[数组排序],但是不支持自定义数组,所以我们需要自己写一个数组排序
       05.jpg


    $str = '';
    foreach ($params as $key => $value)
    {
        if ($value !== '')
        {
            $str .= $key . '=' . urlencode($value) . '&';
            //这里看似复杂,其实非常简单,给你贴出源码来,一看就明白了。
        }
    }
       06.jpg


    $str .= 'app_key=' . $appkey;
    // 拼接app_key ,易语言写的话就是:str = str + “app_key=” + appkey


    $sign = strtoupper(md5($str));
    //最后取出MD5转为大写,大功告成!
    return $sign;
}

·好啦~sign已经取到了,接下来看看如何接入识图
·因为上面取sign的时候是以数组的形式写的,那么我们传递参数的时候也要使用数组传递,具体参数内容可以到腾讯AI开放文档中查看,这里就不多做说明了。
07.jpg
·request就是处理后需要提交的POSTorGet参数了。


·理返回内容就是标准的JSON形式,不太会解析JSON的小火鸡可以用精易编程助手的JSON调试功能生成代码。
·当前我们所使用的这个接口可以直接返回出文字的内容、位置、宽高、翻译结果等信息。接下来要做的就是如何将文字改成翻译后的结果


图色分析:                                                                                                


·现在我们得到了一张截图,知道了文字的位置,那么怎么去掉原来的文字呢。
·这里我采用的是去图片主要颜色,然后绘制一个矩形(因为我们已经知道文字的位置了嘛)将原本的内容遮住。
>图像主要颜色提取算法
· 颜色量化算法
·彩色图像一般采用RGB色彩模式,每个像素由RGB三个颜色分量组成。随着硬件的不断升级,彩色图像的存储由最初的8位、16位变成现在的24位、32真彩色。所谓全彩是指每个像素由8位(28=0~255)表示,红绿蓝三原色组合共有1677万(256&#8727;256&#8727;256)万种颜色,如果将RGB看作是三维空间中的三个坐标,可以得到下面这样一张色彩空间图
08.jpg
·当然,一张图像不可能包含所有颜色,我们将一张彩色图像所包含的像素投射到色彩空间中,可以更直观地感受图像中颜色的分布:
09.jpg
·因此颜色量化问题可以用所有矢量量化(vector quantization, VQ)算法解决。
12.jpg


·我们就可以将以主色为基础作为背景颜色在原有的基础上绘制一个矩形将原本的文字覆盖。
·之后我们以背景颜色的反色为前景颜色,将文字绘制到位置上。


修改位置:                                                                                                


·差点忘记说了,源码修改自己腾讯AI APPKEY的位置在  FormAss程序集->DealThread子程序->第四行处


今日福利:                                                                                                


刮一刮赢大奖:恭喜您获得[回复本帖即可获得一枚精币]券





OCR.zip (781.85 KB, 下载次数: 185)

点评

接口申请:https://ai.qq.com/product/nlptrans.shtml#photo   江苏省苏州市  发表于 2019-5-16 19:19

评分

参与人数 4好评 +4 精币 +6 收起 理由
冷剑 + 1 + 1 感谢发布原创作品,精易因你更精彩!
a135123 + 1 + 2 售价好贵,评分点赞回帖回血
凌哥 + 1 + 3 感谢分享,很给力!~
1301ok + 1 支持开源~!感谢分享

查看全部评分


本帖被以下淘专辑推荐:

  • · 精品|主题: 114, 订阅: 10
结帖率:87% (13/15)

签到天数: 9 天

发表于 2023-6-15 08:41:32 | 显示全部楼层   河北省保定市
感谢分享
回复 支持 反对

使用道具 举报

发表于 2023-5-16 17:08:10 | 显示全部楼层   四川省成都市
感谢分享
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2023-3-19 01:48:48 | 显示全部楼层   福建省龙岩市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

发表于 2021-12-31 12:48:07 | 显示全部楼层   广东省深圳市
回复抽奖
回复 支持 反对

使用道具 举报

发表于 2021-11-13 22:09:02 | 显示全部楼层   山东省潍坊市
所以说只有APPKEY有什么用
回复 支持 反对

使用道具 举报

结帖率:91% (187/205)

签到天数: 13 天

发表于 2020-6-8 12:46:51 | 显示全部楼层   广西壮族自治区崇左市
完全看不懂干嘛用的,。
回复 支持 反对

使用道具 举报

发表于 2020-3-16 21:17:53 | 显示全部楼层   安徽省宿州市
11111111111111111111111111111111111111
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)
发表于 2020-2-9 20:55:48 | 显示全部楼层   云南省临沧市
感谢分享,楼主好人,学习一下o(* ̄▽ ̄*)ブ。现在时间是:2020年2月9日20时55分46秒
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2019-12-28 19:03:23 | 显示全部楼层   河南省郑州市
支持一下,,,
回复 支持 反对

使用道具 举报

结帖率:38% (6/16)

签到天数: 22 天

发表于 2019-12-23 18:14:36 | 显示全部楼层   福建省宁德市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表