IdxSubOcr

IdxSubOcrIdxSubOcr: An application to OCR Vobsub (idx/sub) files in
Chines, Japenese and English.
作者:马健
邮箱:stronghorse@https://www.360docs.net/doc/d512114531.html,
主页:老马的原创空间
FAQ
使用说明
一、软件安装/删除
二、软件使用
附录A 关于OCR
附录B 鸣谢
附录C 版本更新记录
FAQ
Q:IdxSubOcr是什么?
A:这是一个专门用来OCR(光学字符识别)Vobsub格式字幕的软件,能够将idx/sub格式的字幕转成srt格式,并提供srt格式校对功能。OCR引擎为微软Office
2003所带的Microsoft Office Document Imaging (MODI),支持英文、简体中文、繁体中文、日文。
Q:为什么要开发IdxSubOcr?
A:目前已经有一些免费的字幕OCR软件,英文的可以用Subresync,中文的可以用SubOCR。但是在使用了这些软件后,我还是决定开发IdxSubOcr,理由如下:
希望能够使用方便性方面有所改善。Subresync自带的OCR引擎的识别率很棒,但是每次都要敲几十个字母实在太麻烦;而且还不支持中文、日文字符。

SubOCR实在太庞大,而且在某些机器上运行出错。
Q:IdxSubOcr的识别效果如何?
A:目前能够比较的相似软件是Subresync和SubOCR,分别能识别英文和中文:
Subresync有两种识别方式:使用ocrdll的自动方式和缺省的手工方式。Subresync的识别率明显优于使用ocrdll的自动方式,与缺省的手工方式大致相同,但是击键次数大大减少,只有在碰到粘连在一起的字符才需要用户手工辨识,而Subresync需要对每个字母先进行人工辨识。

SubOCR目前支持简体和繁体中文,繁体中文引擎的识别率优于简体中文引擎。IdxSubOcr除中文外,还支持日文识别,识别率相当于SubOCR繁体中文引擎的识别率。

Q:IdxSubOcr在使用上有什么要求?
A:IdxSubOcr的运行环境存在下列限制:
只能从硬盘上运行,不能从光盘等只读识别上运行。
本软件的中文、日文识别结果为GBK字符,因此只能在支持GBK编码的环境下使用。一般Windows 2000/XP没有问题,Windows
Me看运气,Windows 98多半不行。
配置MODI以支持简体中文、繁体中文、英文的方法请google我写的《在简体中文Office 2003下OCR繁体中文、日文、韩文》。
Q:IdxSubOcr收费吗?
A:IdxSubOcr是一个“友情软件”(Friendware),用户在承诺不用于商业目的,也不对文件及其附件进行任何更改的条件下,不需要为使用该软件负任何费用,最多是在某个讨论区看到我发帖子灌水时(我的ID一般是strnghrs),进去捧个人场,作为友情回报;或者在年节时发个email问声好(所以叫“友情软件”)。

我承诺绝不在程序中暗藏任何商业广告、木马,但不承诺为使用IdxSubOcr的后果承担任何责任。如果您需要将它用于商业目的,或加入您的网站,请与我联系,否则保留追究一切责任的权利。
使用说明
一、软件安装/删除
本软件安装非常简单:创建一个目录,用WinZip将下载下来的ZIP包解压缩到该目录即可。
本软件的删除也很简单:直接删除从ZIP包中解压缩出来的所有文件及运行过程中生成的文件即可。
ZIP包中包括下列文件:
IdxSubOcr.exe。这是软件的主程序。
IdxSubOcr.htm。本帮助文件。
如果您下载到的ZIP包中还包括其它文件,毫无疑问不是我放进去的,有广告之嫌疑,请立即删除。
另外程序运行过程中还会生成以下文件:
IdxSubOcr.ini。这个是参数保存文件,第一次更改参数后生成。退出IdxSubOcr,删除此文件,再重启IdxSubOcr,即可恢复缺省参数。

二、软件使用
软件的使用比较简单:
点击“打开idx文件”按钮,选择需要OCR/校对的idx文件。
在“操作选项”里,选择需要OCR/校对的字幕,及究竟是要OCR还是校对。
如果是OCR,在接下来的“OCR”选项中,需要选择OCR语言及字幕颜色。注意这两个选项直接关系到OCR效果,所以必须认真选择:语言好说,颜色必须保证文字为实心字,空心字没法识别。
如果字幕第一行为空,则文字颜色可能不能选择,可以选择字幕其他行,直到能够选择颜色。OCR识别结束后,自动进入校对模式。
如果是校对,界面上方显示字幕图像,下方显示文字,用户可以直接对文字进行编辑。在编辑框中可以使用上下箭头、PgDn、PgUp滚动。校对完成后,点击“保存srt文件”按钮存盘。

在校对过程中,可以用“辅助功能”进行辅助,包括:
文本替换。通常用来替换OCR中的一些习惯性错误。
英文句首字母大写。某些英文字幕全是大写,看起来比较费劲,用这个可以转成小写。
繁体转简体。繁体中文字幕OCR后的结果是GBK编码的繁体字,如果觉得麻烦,可以用这个功能转换成GB编码的简体字。
附录A 关于OCR
OCR一直是我感兴趣的一个问题,但是大多数成功的OCR产品都对自己的技术细节秘而不宣。我接触的第一个开源OCR是gocr,一个在linux下大名鼎鼎的开源项目。从源代码本身看,这个项目是真正按照OCR引擎的要求开发的,层次分解得很好,OCR该有的操作也都基本具备。但是在真正编译、运行成功后,我也发现了一些问题:
源代码的链表操作有问题,会产生内存泄露。一个如此有名的软

件会出现这样的错误,多少有些出乎我的预料。虽然我尝试着堵上了我能够找到的漏洞,但是我绝对不敢保证我已经堵上了所有的漏洞。我发现的问题和我的解决方案都已经发给了gocr的作者,希望后续的版本能够彻底解决这个问题。

gocr原先的识别引擎是基于规则的,没有任何训练、学习能力。新的基于特征数据库的引擎似乎还不是很成熟,但是值得期待。
对斜体字的识别率实在令人扫兴,但是偏偏现在很多字幕在显示歌词的时候喜欢用斜体字。不过这个问题可以通过增加纠偏过滤器来解决。
顺着gocr网页中的链接,我还找到了另外一个开源OCR项目——ocrchie。这个项目看起来最有吸引力的地方就是它的引擎具有学习能力,能够在使用过程中不断扩充特征库。不过在编译、运行成功后,我也发现了一些问题:
内存泄露问题比gocr还严重,而且几个链表交叉成网状,想改都不知道从哪改起。
特征定义是针对大字体的,小字体下字体变形严重,识别率很低,偏偏字幕文件全是小字体。这个看一下源代码中附带的train.tif其实就该知道了,我居然在花了两天时间改程序
后才发现,有够笨。
另外在研究Vobsub解码idx/sub格式的同时,我也顺便看了一下Vobsub的OCR部分。从源代码看,Vobsub支持两套OCR引擎:一个是Vobsub自带的,一个是使用ocrdll。我自己的猜测:Vobsub一开始的时候可能用的是ocrdll,后来因为ocrdll开始收费,才开发了自己的OCR引擎。当然这个仅仅是我的猜测,实际情况我也不知道。
国内某些论坛上有帖子说:到SimpleOCR网站下载一个免费版SimpleOCR,安装后将安装目录下的OCRDLL.DLL、DLLTWAIN.DLL、ENGLISH.WDC复制到subresync所在目录,即可让Vobsub自动识别,不再需要每次识别时敲字母。我自己的经验是:
按照我google的结果,上述说法是从国外一个论坛帖子上翻译过来的,有点老了。
以前可能确实可以在SimpleOCR网站上下载到带OCRDLL.DLL的免费版SimpleOCR,但是如今已经没有这样的好事了,就算安装了SimpleOCR,里面也不会有OCRDLL.DLL。估计是从商业角度考虑,其作者更改了软件接口。而且在他的努力下,现在网上已经找不到以前版本的SimpleOCR了,至少我没找到。

SimpleOCR的前身是wocr,这个是真正的免费软件,接口也是公开的(Vobsub用的就是这个接口),现在在某些地方还能下载到。我比较过wocr
2.5和SimpleOCR 3.1所带的ENGLISH.WDC文件,一个字节都不差。
ocrdll不是Vobsub的缺省选项,因此即使将上述3个文件复制到subresync,在使用时还要勾选“Use
ocrdll.dll”选项,才能

自动识别。至于识别的效果……谁用谁知道!至少我自己不会在自动识别的基础上进行校对,最多只是在校准idx/sub的时候作为选择试听点的参考。

至于Vobsub自带的OCR引擎,这个可能是最精确的引擎:将需要识别的字符与学习样本逐“象素”比较,因此识别率不是其它正常OCR可以比的。但是正因为它不是基于特征的,因此学习的结果没有办法保存,只能每次开始识别前先学习一遍,好在英文字母数量有限,但是中文就绝对不能这么玩。
由于目的比较明确,因此Vobsub自带的OCR引擎实现比较简单,不仅没有其它引擎的特征抽取过程,常见的去噪声点、倾斜校正等功能也没有,不过这些功能对字幕识别本来也没有多大用处。
真正让我对OCR重燃信念,是在我接触到微软Office 2003所带的Microsoft Office Document Imaging
(MODI),这大概是目前唯一公开接口、支持多语言的商业级OCR引擎。奇怪的是,这么好的东西在Office
2007的缺省安装里居然没有,需要手工选择安装。
在用MODI开发了几个OCR相关软件(Pdg2Pic、TextForever、DjVuToy等)后,我开始尝试用它来OCR字幕,因为字幕OCR有其特殊性:
字幕中的文字通常都很小,其实Vobsub显示的时候都是放大显示,所以才会看到锯齿。
目前商用的OCR引擎,主要针对的是扫描文字,字体尺寸要比字幕的字体尺寸大很多,如果直接使用这样的OCR引擎,识别率很难提升。
在经过大量的测试、改进后,目前IdxSubOcr在识别中文、日文方面效果不错(可能与中文、日文的字体变化不大有关),但是识别英文的效果差了点。
由于在OCR引擎方面有一个漫长的摸索过程,因此IdxSubOcr的开发时间也较长:2005年底就开始,直到2008年初才完成。当时因为是年底,所以选了一个圣诞风格的icon,后来为了纪念,也就一直没换。
附录B 鸣谢
本软件开发过程中引用了下列软件的源代码,在此对作者表示诚挚的谢意:
Gabest的Vobsub v2.18;
Davide Pizzolato的CxImage;
=[ Abin ]=的CReportCtrl - An extremely convenient version of report-style
CListCtrl;
Chris Maunder的A Popup Progress Window;
James R. Twine的Color Picker Combo Box。
附录C 版本更新记录
Version 1.06
功能增强:加强繁简转换时的纠错能力。
Version 1.05
重写OCR后处理部分,减小文字错位、错行的概率。
Version 1.04
错误修正:如果字幕编号不是从0开始,则不能正常OCR。
Version 1.03
功能修正:对于Unknown的字幕语言,在提醒后允许继续OCR。
Version 1.02
功能修正:考虑到宽屏逐

渐普及,初始界面不再最大化。
错误修正:界面缩小到正常大小时,“黑白图像”选项会被遮挡。
Version 1.01
错误修正:如果字幕第一行为空,则在“OCR选项”中,不能再选择文字颜色。
Version 1.00
提供字幕OCR、校对功能。
OCR采用MODI引擎,支持英文、简体中文、繁体中文、日文。

相关主题
相关文档
最新文档