• 【玛沁天气】最新玛沁今天天气,实时提供玛沁气温、空气质量、24小时天气预报、生活指数查询 2019-07-24
  • 安徽快3派奖热销 宿州彩民一天两趟忙兑奖 2019-07-24
  • 宜昌朝天吼景区举行国际龙舟漂流大赛 2019-07-10
  • 中国大学生帆船锦标赛大鹏启航 2019-07-10
  • 党的十九大举行第一场记者招待会 介绍加强党建工作和全面从严治党有关情况 2019-07-02
  • 中华人民共和国安全生产法 2019-07-02
  • 网络司法拍卖若违法 当事人受损可申请国家赔偿 2019-07-01
  • 火箭3巨头计划选詹皇or乔治?泡椒3点更兼容灯泡 2019-07-01
  • 世界30座顶级建筑美轮美奂令人叹服 ——凤凰网房产 2019-06-25
  • 端午假期要来了!收藏这份指南,避开人山人海 2019-06-18
  • 华为新平板!MediaPad M5 将配麒麟 960 2019-06-16
  • 【中国梦·大国工匠篇】鸡蛋上钻孔显真功 潜心坚守一线练就绝活儿 2019-06-11
  • 【理上网来·喜迎十九大】塞尔维亚驻华大使:中国的发展是其他国家望尘莫及的 2019-06-10
  • 六大工程培育发展新动能 2019-06-10
  • 为推动上合组织发展提供中国智慧、中国方案 2019-05-29
  • 批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
    [批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
    返回列表 发帖

    广东十一选5最快开奖:[原创] OCRImage-图片云识别工具(百度云版)

    本帖最后由 老刘1号 于 2019-5-2 18:16 编辑

    最近正好要批量OCR一些PDF提取出来的图片,就写了一个,
    用的是百度云OCR接口,腾讯云倒是也有这种接口,不过比较麻烦,还要实名认证,懒的折腾~
    如果可以的话,希望可以放到第三方库里面@CrLf。
    用法如下:
    老刘封装——图像云OCR工具(百度云版,支持中英文混排)

    用法:
    CSCRIPT -NOLOGO OCRImage.VBS    <APIKey>        <SecretKey>     <ImageFilePath>

    APIKey                  你创建的百度云人工智能应用所附带的APIKey
    SecretKey               你创建的百度云人工智能应用所附带的SecretKey
    ImageFilePath           图像文件的路径(支持相对路径)

    百度云人工智能OCR:     https://cloud.baidu.com/product/ocr

    输出信息:
    句柄1                   OCR结果
    句柄2                   帮助、错误信息、执行耗时

    注意:
    一、不支持XP系统。
    二、图片大小必须小于3M,建议小于1M。否则就会非常慢(VBS的锅,下次换Vb.Net),而且识别效果极差甚至无法识别(这是百度云的锅)。

    大家如果懒得注册百度云,添加应用,就先拿去用吧,反正5w次LZ用不完^_^
    TsjtQn5zM9jjptHFjlOPwfQp kQnaefbF0PmAQOruq7hBbQZBd1MtWVl1
    码云链接:https://gitee.com/OldLiu001/codes/mwcqbtel2po8uf54xrzkh10
    GitHub_Gist链接:
    源码如下(ImageOCR.VBS,使用自制工具VbsHighLight-Vbs代码着色工具上色):
    ——————————————————
    Rem CODE BY OLDLIU
    Option Explicit
    Randomize

    Dim ExitCode
    ExitCode = Main()
    WSH.Quit ExitCode

    Function Main()
        Const OCR_URL = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"
        If WSH.Arguments.Count = 3 Then
            Dim fso,APIKey,SecretKey,Start_Time
            Start_Time = Timer
            Set fso = CreateObject("Scripting.FileSystemObject")
            APIKey = WSH.Arguments(0)
            SecretKey = WSH.Arguments(1)
            If fso.FileExists(WSH.Arguments(2)) Then   
                Dim ImageFilePath,Token
                ImageFilePath = fso.GetFile(WSH.Arguments(2)).Path '处理相对路径
                Token = GetToken(APIKey,SecretKey)
                If Token <> "ERROR" Then
                    With CreateObject("HTMLFILE")
                        .ParentWindow.execScript _
                        "var ImageBase64String_URLEnc = encodeURIComponent('" & FileBase64Enc(ImageFilePath) & "');"
                        If Len(.ParentWindow.ImageBase64String_URLEnc) <= 4*1024*1024 Then
                            .ParentWindow.execScript _
                            "var JSON = " & _
                            HTTP_POST( _
                            OCR_URL & "?access_token=" & Token, _
                            "image="& .ParentWindow.ImageBase64String_URLEnc & _
                            "&language_type=CHN_ENG" & _
                            "&detect_direction=false" & _
                            "&detect_language=false" _
                            )
                            On Error Resume Next
                            Dim Error_Code
                            Error_Code = .ParentWindow.JSON.error_code
                            If Error_Code = Empty Then
                                On Error Goto 0
                                Dim i
                                For i = 0 To .ParentWindow.JSON.words_result_num - 1
                                    WSH.Echo Eval(".ParentWindow.JSON.words_result.[" & i & "].words")
                                Next
                                Main = 0
                                WSH.StdErr.WriteLine "成功,用时 " & Timer - Start_Time & " sec。"
                            Else
                                On Error Goto 0
                                Main = 5
                                WSH.StdErr.WriteLine "Error! Code:" & Error_Code & ", msg:" & .ParentWindow.JSON.error_msg
                            End If
                        Else
                            Main = 4
                            WSH.StdErr.WriteLine "文件过大。"
                        End If
                    End With
                Else
                    Main = 3
                    WSH.StdErr.WriteLine "APIKey或SecretKey有误。"
                End If
            Else
                Main = 2
                WSH.StdErr.WriteLine "文件未找到。"
            End If
        Else
            Main = 1
            WSH.StdErr.WriteLine "老刘封装——图像云OCR工具(百度云版,支持中英文混排)" & vbNewLine & vbNewLine & _
            "用法:" & vbNewLine & _
            "CSCRIPT -NOLOGO OCRImage.VBS        <APIKey>        <SecretKey>        <ImageFilePath>" & vbNewLine & vbNewLine & _
            "APIKey                        你创建的百度云人工智能应用所附带的APIKey" & vbNewLine & _
            "SecretKey                你创建的百度云人工智能应用所附带的SecretKey" & vbNewLine & _
            "ImageFilePath                图像文件的路径(支持相对路径)"& vbNewLine & vbNewLine & _
            "百度云人工智能OCR:        https://cloud.baidu.com/product/ocr" & vbNewLine & vbNewLine & _
            "输出信息:" & vbNewLine & _
            "句柄1                        OCR结果" & vbNewLine & _
            "句柄2                        帮助、错误信息、执行耗时" & vbNewLine & vbNewLine & _
            "注意:" & vbNewLine & _
            "一、不支持XP系统。" & vbNewLine & _
            "二、图片大小必须小于3M,建议小于1M。否则就会非常慢(VBS的锅,下次换Vb.Net),而且识别效果极差甚至无法识别(这是百度云的锅)。"
        End If
    End Function


    Function HTTP_POST(ByVal Address,ByVal Args)
        With CreateObject("MSXML2.XMLHTTP")
            .Open "POST",Address, False
            .SetRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded"
            .Send Args
            HTTP_POST = .ResponseText
        End With
    End Function

    Function GetToken(ByVal APIKey,ByVal SecretKey)
        Const GET_TOKEN_URL = "https://aip.baidubce.com/oauth/2.0/token"
        On Error Resume Next
        GetToken = _
        Split( _
        HTTP_POST( _
        GET_TOKEN_URL, _
        "grant_type=client_credentials" & _
        "&client_id="&APIKey & _
        "&client_secret=" & SecretKey _
        ) _
        ,"""")(13)
        If Err.Number <> 0 Then GetToken = "ERROR"
        On Error Goto 0
    End Function

    Function FileBase64Enc(ByVal strFilePath)
        Dim fso,WshShell,TmpFilePath,oReadFile
        Const ForReading = 1
        Const MyBirthDay = 1228
        Const WINDOW_HIDE = 0
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set WshShell = CreateObject("Wscript.Shell")
        TmpFilePath = fso.GetSpecialFolder(2) & "\" & Fix(Rnd * MyBirthDay) & ".TMP"
        WshShell.Run "Certutil.EXE -ENCODE """ & strFilePath & """ """ & TmpFilePath & """" ,WINDOW_HIDE ,True
        Set oReadFile = fso.OpenTextFile(TmpFilePath,ForReading)
        oReadFile.ReadLine '跳过首行的”-----BEGIN CERTIFICATE-----“标志
        Dim Str
        While Str <> "-----END CERTIFICATE-----"
            FileBase64Enc = FileBase64Enc & Str
            Str = oReadFile.ReadLine
        Wend
        oReadFile.Close
        fso.DeleteFile TmpFilePath
    End Function
    ——————————————————
    如果这个工具帮到了您,您可以赞助我们,您的赞助就是我们最大的动力!
    个人赞助:
    附件: 您需要登录才可以下载或查看附件。没有帐号?注册
    3

    广东十一选五计划软件 www.qe-ar.com 评分人数

    已上传

    TOP

    看不懂,太复杂了,不能处理在线地址图片,下载本地不符合绿色精神?;共皇歉呔仁侗?,识别不好

    TOP

    回复 4# kaze


        就是套个api,没啥看懂看不懂的
    高精度这个……百度的识别率貌似比起腾讯、搜狗、有道是最差的了,
    所以换其它提供商的可能好些。
    不能处理在线图片,这个确实不大方便,如果还有下次更新的话写个httpget处理一下

    TOP

    回复 5# 老刘1号


    感谢回复,如果方便的话改成批处理调用JAVASCRIPT的形式,可移植到安卓tasker使用,话说网上有个py脚本识别的,也是看不懂怎么转化,折腾一天我放弃了

    TOP

    回复 6# kaze


        这个其实不用研究实现,直接看官方api接口文档就行了

    TOP

    说到OCR这个,Google Drive也有此功能,貌似辨识率很高,
    而且没有限制的样子,但就不晓得能不能这么用
    弄成批量自动化想必很不错。

    TOP

    回复 1# 老刘1号


        您好,本人小白,请问要修改的三个参数在哪里哪呢?能指一下吗,感谢!

    TOP

    有大神愿意伸出援手吗? 搞了三天了,还没搞定,提前感谢,
    假设我的三个参数如下,我应该怎样改上面的代码呢?
    APIKey 是123
    SecretKey 是456
    ImageFilePath 是c:\123.png

    TOP

    本帖最后由 老刘1号 于 2019-5-2 18:26 编辑

    回复 9# 5i365


        调用方法是:cscript -nologo vbs 123 456 c:\123.png

    测试了一下发现确实不能用了,去百度云官方查了一下文档发现Access token获取回来的参数添加了几个,原来参数的位置变了,而写获取token的时候偷懒用字符串分割代替了,所以获取到了错误的token,(大家引以为戒)
    顶楼已经更新代码,不过还是不严谨的字符串截取+补救版(其实就是改了个数字),
    准备用其它语言重写了,毕竟vbs太慢,顺便加一个位置精确识别功能,好直接转换为word

    如果不是批量使用的话,建议用天若OCR,支持快捷键矩形选框截图识别,好几个识别接口,还有公式识别、表格识别等功能,比这个不知道强到哪去了

    TOP

    本帖最后由 5i365 于 2019-5-3 05:11 编辑

    回复 10# 老刘1号

    感谢大师回复,
    我是一个批处理的小白,大师能再帮忙指导一下吗?我不想从其它文件中调用这些代码,我想将上面的代码,存成一个名为BaiduOCR.vbs的文件,然后将我的三个参数,写在上面代码的开头,当我双击这个VBS文件的时候,将识别的结果生成一个text文件到桌面上,这能实现吗? 再次感谢?。?!
    非常感谢大师的源码分享,期待大师用其它语言编写的新作,我会一直关注你的!
       

    TOP

    本帖最后由 5i365 于 2019-5-3 14:36 编辑

    本人前后用了四天时间,才让上面的代码有输出了!简真太笨了
    我用白话说一下我是怎样做的,先把楼主的代码保存为OCRImage.VBS文件,然后在相同的目录下,新建一个 bat文件,文件的内容如下:

    CSCRIPT -NOLOGO OCRImage.VBS  "你的百度云APIKey" "你的百度云SecretKey" "你的图片文件路径"
    pause

    双击bat文件后,稍等一会儿,就出现了识别的结果
    但是本人,目前还是不知道怎样把BAT的内容写在同一个VBS中的运行方法,希望各种高手,能指点一下,感谢

    TOP

    OCRImage.VBS  无法下载?? 连接挂了?麻烦更新下

    TOP

    回复 13# ppappa2001


        你是认真的么?

    TOP

    返回列表
  • 【玛沁天气】最新玛沁今天天气,实时提供玛沁气温、空气质量、24小时天气预报、生活指数查询 2019-07-24
  • 安徽快3派奖热销 宿州彩民一天两趟忙兑奖 2019-07-24
  • 宜昌朝天吼景区举行国际龙舟漂流大赛 2019-07-10
  • 中国大学生帆船锦标赛大鹏启航 2019-07-10
  • 党的十九大举行第一场记者招待会 介绍加强党建工作和全面从严治党有关情况 2019-07-02
  • 中华人民共和国安全生产法 2019-07-02
  • 网络司法拍卖若违法 当事人受损可申请国家赔偿 2019-07-01
  • 火箭3巨头计划选詹皇or乔治?泡椒3点更兼容灯泡 2019-07-01
  • 世界30座顶级建筑美轮美奂令人叹服 ——凤凰网房产 2019-06-25
  • 端午假期要来了!收藏这份指南,避开人山人海 2019-06-18
  • 华为新平板!MediaPad M5 将配麒麟 960 2019-06-16
  • 【中国梦·大国工匠篇】鸡蛋上钻孔显真功 潜心坚守一线练就绝活儿 2019-06-11
  • 【理上网来·喜迎十九大】塞尔维亚驻华大使:中国的发展是其他国家望尘莫及的 2019-06-10
  • 六大工程培育发展新动能 2019-06-10
  • 为推动上合组织发展提供中国智慧、中国方案 2019-05-29
  • 甘肃11选5任三号码推荐 彩票网站模板 美女娱乐城贴图论坛 香港赛马会慈善网 陕西快乐十分复式投注表 上海基诺彩票中奖金额 高频彩和大发 500彩票网ipo 二八杠八个生死门 羽毛球的价格 福利彩票甘肃快3实时 胜负14场投注爱彩网 中国福彩网排列三 pc蛋蛋算法最新的 河源报纸码报