首页 > 代码库 > 有道词典中的OCR功能:第三方库的变化

有道词典中的OCR功能:第三方库的变化

  之前有点好奇有道词典中的OCR功能,具体来说就是强力取词功能。我知道的最有名的OCR库是tesseract,这个库是惠普在早些年前开源的。

  在用python做爬虫处理验证码的时候,就会用到这个库,对应的python封装版本名字叫pytesseract。在github上可以找到tesseract的源码。

  不过,此前在有道词典安装之后的文件夹中,我并未找到tesseract库。直到最近,更新了有道词典,换了新版本,才意外在文件下找到一个名叫tessdll.dll的文件。

  技术分享

  与此同时,我对照了一下旧版本,其中有一个叫XDLL.dll的库。查看其属性可以看到,名字叫ksense:

  技术分享

  根据搜索结果可知,该XDLL.dll库来源于一款名叫"逍遥笔手写输入"的国产软件。值得注意的是,在加入tessdll.dll之后依然保留了XDLL.dll。

  要推断其中的原因。还有一个文件值得注意,那就是OcrInfo.xml,其内容为:

<?xml version="1.0" encoding="UTF-8" ?>
<Strings>
    <Version>1.0</Version>
    <Lang Name="OCRLe">
        <String Name="en" Value="0" Size="3470" ReName="eng" UPDATE="0"  LOAD="1"/>
        <String Name="es" Value="1" Size="15580" ReName="spa" UPDATE="0" LOAD="0"/>
        <String Name="pt" Value="2" Size="12612" ReName="por" UPDATE="0" LOAD="0"/>
        <String Name="de" Value="3" Size="13054" ReName="deu" UPDATE="0" LOAD="0"/>
        <String Name="fr" Value="4" Size="13715" ReName="fra" UPDATE="0" LOAD="0"/>
        <String Name="ru" Value="5" Size="15774" ReName="rus" UPDATE="0" LOAD="0"/>
        <String Name="ja" Value="6" Size="32298" ReName="jpn" UPDATE="0" LOAD="0"/>
        <String Name="ko" Value="7" Size="12998" ReName="kor" UPDATE="0" LOAD="0"/>
    </Lang>
    <Lang Name="MultiLeSelect">
        <String Name="英汉互译 " Value="eng" QueryName="en" ReName="英文"      LeHint ="(英语)"     />
        <String Name="法汉互译 " Value="fra" QueryName="fr" ReName="法文"      LeHint ="(法语)"     />
        <String Name="日汉互译 " Value="jpn" QueryName="ja" ReName="日文"      LeHint ="(日语)"     />
        <String Name="德汉互译 " Value="deu" QueryName="de" ReName="德文"      LeHint ="(德语)"     />
        <String Name="韩汉互译 " Value="kor" QueryName="ko" ReName="韩文"      LeHint ="(韩语)"     />
        <String Name="葡汉互译 " Value="por" QueryName="pt" ReName="葡萄牙文"  LeHint ="(葡萄牙语)" />
        <String Name="西汉互译 " Value="spa" QueryName="es" ReName="西班牙文"  LeHint ="(西班牙语)" />
        <String Name="俄汉互译 " Value="rus" QueryName="ru" ReName="俄文"      LeHint ="(俄语)"     />
    </Lang>
</Strings>

  据此可以推断,新版的有道词典加入tesseract库,主要为了支持更多的语言,而中文的OCR可能依然是使用ksense进行处理。

有道词典中的OCR功能:第三方库的变化