sub字幕转换srt - IdxSubOcr v1.15

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的后果承担任何责任。如果您需要将它用于商业目的,或加入您的网站,请与我联系,否则保留追究一切责任的权利。

Q:“OCR前先加粗处理”有什么用?
A:有些字幕在文字周围有其他颜色的边框,在去掉边框后,文字笔画会变得太细,影响OCR质量。这时就可以选择此选项,通过加粗文字笔画,提高OCR识别率。但如果文字笔画本来就不细,选择此选项后可能会造成笔画粘连,反而降低OCR识别率。
所以此选项没有记忆功能,您如果觉得正常情况下OCR后的字幕错别字太多,可以勾选“黑白图像”功能,实际看一下黑白处理后字幕文字的笔画是否过细,如果是就勾选此选项重新OCR一遍。

Q:影响OCR识别率的因素有哪些?
A:包括但不限于:

OCR语言选择错误。如字幕明明是繁体中文,选择OCR语言时却选择简体中文,能出来好的质量才真是有鬼。就我在网上看到的情况,很多抱怨本软件OCR质量差的人犯的都是这个错误,因为不是人人都知道怎么安装繁体中文语言包的。
建议使用本软件前先阅读此文:
http://www.comicer.com/stronghorse/water/software/officeocr.htm
如果您安装的是Office 2007,务必要按照文中的说明打SP1、SP2或SP3补丁,否则不能OCR。
如果您安装的是office 2010及其以上的版本,将不再含本软件OCR所需的MODI模块,建议按照此文的说明单独安装:
http://www.comicer.com/stronghorse/water/software/modi.htm
独立运行的简体中文MODI组件(含简中、英):http://ishare.iask.sina.com.cn/f/25168321.html
繁体中文语言包:http://ishare.iask.sina.com.cn/f/24878359.html
日文语言包:http://ishare.iask.sina.com.cn/f/24878361.html
字幕图像质量太烂。如果是笔画太细,可以试试看勾选“OCR前先加粗处理”。
中英文混杂,这个没有办法,是OCR引擎的事情。
文字出现斜体或其他花狸狐哨的变体,这个也没有办法,同样是OCR引擎的事情。

使用说明

一、软件安装/删除

本软件安装非常简单:创建一个目录,用WinZip将下载下来的ZIP包解压缩到该目录即可。

本软件的删除也很简单:直接删除从ZIP包中解压缩出来的所有文件及运行过程中生成的文件即可。

ZIP包中包括下列文件:

IdxSubOcr.exe。这是软件的主程序。
IdxSubOcr.htm。本帮助文件。

如果您下载到的ZIP包中还包括其它文件,毫无疑问不是我放进去的,有广告之嫌疑,请立即删除。

另外程序运行过程中还会生成以下文件:

IdxSubOcr.ini。这个是参数保存文件,第一次更改参数后生成。退出IdxSubOcr,删除此文件,再重启IdxSubOcr,即可恢复缺省参数。

二、软件使用

软件的使用比较简单:

点击“打开idx文件”按钮,选择需要OCR/校对的idx文件。 或直接从资源管理器拖拽idx文件。
如果有必要,设置“毫秒分隔符”选项,即毫秒用小数点还是句号分隔。
如果有必要,勾选“OCR前先加粗处理”,避免因为笔画过细影响OCR质量。但如果文字笔画本来就不细,勾选此选项后可能造成笔画粘连,反而影响质量。
在“操作选项”里,选择需要OCR/校对的字幕,及究竟是要OCR还是校对。
如果是OCR,在接下来的“OCR”选项中,需要选择OCR语言及字幕颜色。注意这两个选项直接关系到OCR效果,所以必须认真选择:语言好说,颜色必须保证文字为实心字,空心字没法识别。 如果字幕第一行为空,则文字颜色可能不能选择,可以选择字幕其他行,直到能够选择颜色。OCR识别结束后,自动进入校对模式。
如果是校对,界面上方显示字幕图像,下方显示文字,用户可以直接对文字进行编辑。在编辑框中可以使用上下箭头、PgDn、PgUp滚动。校对完成后,点击“保存srt文件”按钮存盘。

在校对过程中,可以用“辅助功能”进行辅助,包括:

文本替换。通常用来替换OCR中的一些习惯性错误。
英文句首字母大写。某些英文字幕全是大写,看起来比较费劲,用这个可以转成小写。
繁体转简体。繁体中文字幕OCR后的结果是GBK编码的繁体字,如果觉得麻烦,可以用这个功能转换成GB编码的简体字。

另外如果想改变已有srt文件中的毫秒分隔符,可以选择“校对”,然后刚刚“毫秒分隔符”选项,再存盘即可。
附录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,后来为了纪念,也就一直没换。

 

下载

https://loadream.lanzous.com/icpdk3i

链接:https://pan.baidu.com/s/10CR-LurUdjTo3QRrtfgF4w
提取码:3rzr

https://cloud.189.cn/t/7fyEn2emIR3m

思羽布丁的黑苹果动力QQ群:15971419
欢迎赞助一下思羽布丁:https://www.mfpud.com/donations/
思羽布丁 » sub字幕转换srt - IdxSubOcr v1.15