用户名: 密码:      免费注册 | 忘记密码?

VeryCD / 社区 / 字幕管理小组 / 精华

资源管理小组

主题: [申精+置顶]最简单的简繁体字幕OCR方法

相关分类: OCR Subresync 字幕 教程

超级cowboy (楼主) 2010/02/17 16:20:15 顶楼 举报

需要用到的软件:简体office2007专业版
繁体office2007专业版
Micorsoft Office Document Imaging (MODI)
IdxSubOcr
word

软件下载地址:简体office2007专业版和繁体office2007专业版VC上就有,自行下载。
Micorsoft Office Document Imaging (MODI)在office2007工具里面,安装时需设置为默认安装。

IdxSubOcr在老马的网站上:http://www.comicer.com/stronghorse/software/exe/IdxSubOcr.zip

IdxSubOcr说明:功能: 一个专门用来OCR(光学字符识别)Vobsub格式字幕的软件,能够将idx/sub格式的字幕转成srt格式,并提供srt格式校对功能。OCR引擎为微软Office 2003所带的Microsoft Office Document Imaging (MODI),支持英文、简体中文、繁体中文、日文。
动机: 目前已经有一些免费的字幕OCR软件,英文的可以用Subresync,中文的可以用SubOCR。但是在使用了这些软件后,我还是决定开发IdxSubOcr,理由如下:
希望能够使用方便性方面有所改善。Subresync自带的OCR引擎的识别率很棒,但是每次都要敲几十个字母实在太麻烦;而且还不支持中文、日文字符。
SubOCR实在太庞大,而且在某些机器上运行出错。

说明: 本软件的中文、日文识别结果为GBK字符,因此只能在支持GBK编码的环境下使用。一般Windows 2000/XP没有问题,Windows Me看运气,Windows 98多半不行。配置MODI以支持简体中文、繁体中文、英文的方法见《在简体中文Office 2003下OCR繁体中文、日文、韩文》。

分享到开心网  分享到校内  收藏到QQ书签  订阅本主題RSS更新  美味书签

2010/03/22 21:24:39超级cowboy 最后编辑 | 查看全部

超级cowboy (楼主) 2010/02/17 16:21:41 2楼 举报

在简体中文Office 2003下OCR繁体中文、日文、韩文。

一、引子

在简体中文Office 2003下用Micorsoft Office Document Imaging (MODI)做OCR的步骤为:

先确保MODI已经正常安装。Office 2003的缺省安装是第一次使用MODI时安装,Office 2007的缺省安装是不装,都需要改过来。
在资源管理器里选中某个多页TIFF文件,从右键菜单选择用Micorsoft Office Document Imaging打开。
打开后,先选择“工具->选项”,对OCR选项进行设置。常规设置是去掉“自动拉伸”、“自动旋转”选项,再选择合适的语言。
选择“工具->将文本发送到Word”,在弹出的对话框中选择“所有页面”,“在输出时保持图片版式不变”,然后选择默认文件夹,点“确定”,即可开始OCR。
OCR结束后,文本自动发送到Word。缺省格式是HTML,当然也可以另存为txt、doc。
与其他商业OCR软件相比,MODI具有下列特点:

支持多页TIFF。某些OCR只支持单页TIFF,OCR以后还需要对结果进行合并。当然MODI支持的TIFF页数也不是无限的,我个人的经验是不要超过300页。单页TIFF文件可以用免费的TiffToy合并成多页TIFF,然后再用MODI进行OCR。TiffToy合并时可以选择每合并多少个文件生成一个新文件。
中文标点、文本段落保持得比较好,后期校对省了很多事。
支持的语言比较多,Office支持的语言基本都支持。但是这一点对大多数用户来说无法体会,因为正常情况下,MODI只支持英文和当前Office语言(如简体中文)的OCR,要想支持更多的语言,需要进行一些设置,这就是本文所要讨论的内容。当然我并非语言天才,对于亚洲主要语言(中、日、韩)还算有所了解,其他语言一概无知,所以本文的讨论也仅限于这三国语言。
提供开放的编程接口。对于软件开发人员来说,到微软网站下载一份MODI编程手册,即可开发出基于MODI的、具有多国语言OCR功能的软件。
在正式开始讨论系统设置前,先透露一点技术背景:

MODI所使用的中、日、韩OCR引擎,均为清华文通的OCR引擎。
由于简体中文平台的GBK字符集完全覆盖繁体中文、日文,因此繁体中文、日文的OCR结果在简体中文Office环境下均为GBK编码,可以在支持GBK编码的中文平台下正常显示、编辑。当然如果觉得繁体中文看起来比较麻烦,也可以用Word的繁简转换功能,或TextForever的编码转换功能,将GBK繁体转换成GB编码的简体。但是对于韩文来说就没有这么美好了,因为目前GBK还不兼容韩文,所以韩文的OCR结果如果想在简体Office下编辑,大概只能存为HTML或doc文件,然后用Word编辑。
MODI编程手册可以到这里下载:
http://www.microsoft.com/downloads/details...ylang=en
二、系统配置

1、原理

要想让简体中文Office 2003能够OCR繁体、日文、韩文,需要做的工作包括两个方面:

安装相关语言的OCR模块。MODI本身可以看作一个外壳,真正的OCR功能需要靠不同语言的模块实现。每个语言模块包括相关DLL文件和数据文件,需要复制到MODI的安装文件夹下。
告诉MODI,目前有哪些语言的OCR模块可以使用。这个需要更改注册表,更改后在MODI的OCR选项里即可选择对应的语言。
2、实战

繁体中文配置

找一台安装了繁体中文Office 2003的机器,进入MODI的安装文件夹,缺省为:

C:\Program Files\Common Files\Microsoft Shared\MODI\11.0

将下面的文件复制到安装了简体中文Office 2003的相同文件夹下:

TCCODE.UNI
TCPRINT.DAT
TCPRINT2.DAT
TCSERHT.DAT
TCTREE.DAT
TW_BU.DAT
TW_UB.DAT
TWBIG532.DLL

复制完成后,用记事本创建一个reg文件,把下面内容粘贴后存盘:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Installer\Components\61BA386016BD0C340BBEAC273D84FD5F]
"1028"=hex(7):28,00,26,00,48,00,42,00,56,00,6e,00,2d,00,7d,00,66,00,28,00,5a,\
00,58,00,66,00,65,00,41,00,52,00,36,00,2e,00,6a,00,69,00,4f,00,43,00,52,00,\
5f,00,31,00,30,00,32,00,38,00,3e,00,7d,00,60,00,45,00,4d,00,61,00,65,00,2c,\
00,37,00,71,00,39,00,2a,00,44,00,58,00,64,00,55,00,40,00,45,00,50,00,69,00,\
3d,00,00,00,00,00

双击此reg文件导入注册表后,在MODI的OCR选项卡里,“OCR语言”即可看到“中文(繁体)”。注意导入注册表时必须先关闭所有MODI窗口,导入后再打开。

在简体中文环境下,按照上述步骤设置后,用MODI识别出来的繁体中文是GBK编码的繁体字,可以用Word的繁简转换,或TextForever的编码转换功能 (支持批量)转换成GB编码的简体字。

日文配置

需要从日文MODI复制到简体MODI文件夹下的文件为:

JPCODE.UNI
JPPRINT.DAT
JPPRINT2.DAT
JPSERHT.DAT
JPTREE.DAT
TW_SU.DAT
TW_US.DAT
TWRECJ.DLL
TWSJIS32.DLL

需要导入的reg内容为:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Installer\Components\61BA386016BD0C340BBEAC273D84FD5F]
"1041"=hex(7):30,00,5d,00,67,00,41,00,56,00,6e,00,2d,00,7d,00,66,00,28,00,5a,\
00,58,00,66,00,65,00,41,00,52,00,36,00,2e,00,6a,00,69,00,4f,00,43,00,52,00,\
5f,00,31,00,30,00,34,00,31,00,3e,00,2e,00,61,00,45,00,4d,00,61,00,65,00,2c,\
00,37,00,71,00,39,00,2a,00,44,00,58,00,64,00,55,00,40,00,45,00,50,00,69,00,\
3d,00,00,00,00,00

配置成功后,在MODI的OCR选项卡里,“OCR语言”即可看到“日语”。

在简体中文环境下,按照上述步骤设置后,用MODI识别出来的日文是GBK编码,可以在支持GBK字符集的简体中文环境下正常显示、编辑。

韩文配置

需要从韩文MODI复制到简体MODI文件夹下的文件为:

DATASIM.DAT
HANGULLB.DAT
KRCODE.UNI
KRDIST.DAT
KRPRINT.DAT
KRSERHT.DAT
KRTREE.DAT
TW_KU.DAT
TW_UK.DAT
TWCUTCKR.DLL
TWCUTLKR.DLL
TWKSC32.DLL
TWLAYKR.DLL
TWRECK.DLL

需要导入的reg内容为:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Installer\Components\61BA386016BD0C340BBEAC273D84FD5F]
"1042"=hex(7):31,00,5d,00,67,00,41,00,56,00,6e,00,2d,00,7d,00,66,00,28,00,5a,\
00,58,00,66,00,65,00,41,00,52,00,36,00,2e,00,6a,00,69,00,4f,00,43,00,52,00,\
5f,00,31,00,30,00,34,00,32,00,3e,00,30,00,61,00,45,00,4d,00,61,00,65,00,2c,\
00,37,00,71,00,39,00,2a,00,44,00,58,00,64,00,55,00,40,00,45,00,50,00,69,00,\
3d,00,00,00,00,00

配置成功后,在MODI的OCR选项卡里,“OCR语言”即可看到“朝鲜语”。

在简体中文环境下,按照上述步骤设置后,用MODI识别出来的韩文是韩文编码(charset:129),可以存为HTML、doc,并能在Word里正常显示、编辑。如果存为TXT,则不能在简体中文环境下显示、编辑。

简体中文配置

如果需要在繁体中文环境下OCR简体中文,最正宗的方法是下载、安装一个简体MODI:

http://www.microsoft.com/downloads/details...ng=zh-tw

当然如果想省事,也可以复制下列文件:

SCCODE.UNI
SCPRINT.DAT
SCPRINT2.DAT
SCSERHT.DAT
SCTREE.DAT
TW_GU.DAT
TW_UG.DAT
TWGB32.DLL

需要导入的reg内容为:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Installer\Components\61BA386016BD0C340BBEAC273D84FD5F]
"2052"=hex(7):4d,00,6a,00,33,00,47,00,51,00,66,00,5e,00,62,00,54,00,3f,00,42,\
00,3f,00,56,00,50,00,24,00,5e,00,62,00,53,00,6c,00,6c,00,3e,00,25,00,6d,00,\
45,00,4d,00,61,00,65,00,2c,00,37,00,71,00,39,00,2a,00,44,00,58,00,64,00,55,\
00,40,00,45,00,50,00,69,00,3d,00,00,00,00,00


[0] [0] [回复]

超级cowboy (楼主) 2010/02/17 16:22:28 3楼 举报

IdxSubOcr中文简体版说明

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,后来为了纪念,也就一直没换。


[0] [0] [回复]

超级cowboy (楼主) 2010/02/17 16:27:38 4楼 举报

以上教程转载自老马的个人网站。感谢老马开发的软件及教程。

PS:对于繁体中文字幕的OCR,不必按照老马的教程中在安装有繁体中文office2007的机子上复制文件到简体中文office2007的机子上,如果你的机子上安装有简体中文office2007,先下载繁体中文office2007,然后安装繁体中文office2007,在安装过程中除了Micorsoft Office Document Imaging (MODI)之外,全部勾选为不安装,只安装Micorsoft Office Document Imaging (MODI),之后Micorsoft Office Document Imaging (MODI)就安装到C:Program FilesCommon FilesMicrosoft SharedMODI目录中,最后使用IdxSubOcr就可以正常OCR繁体中文字幕了。日语/棒子语/其他语种理论上这样也可以,我没试过,有兴趣的朋友可以尝试。


[0] [0] [回复]

2010/02/17 16:59:06超级cowboy 最后编辑 | 查看全部

zyel 2010/02/21 00:21:22 5楼 举报

实证检验完毕,在遇到某些字幕SubToSrt和SubRip组合不能识别的情况下,IdxSubOcr可以识别,识别准确率相当高(95%),一站式的识别操作简单易用,校对过程中的文本替换功能也挺实用。在SubToSrt和SubRip组合不能识别的情况下可以大显身手。感谢楼主经验分享!


[0] [0] [回复]

mtoc回归 2010/02/23 20:10:39 6楼 举报

谢谢


[0] [0] [回复]

realywei 2011/05/12 16:43:19 7楼 举报

这个支持支持了先!


[0] [0] [回复]


返回组首页


您可能需要登录以后才能回复!

关于我们 | 诚聘英才 | 著作权声明 | 合作信息 | 广告事务 | 天地英雄 | 盛世三国 | 神仙道 | 反馈意见
网络文化经营许可证 文网文[2010]150号 | 增值电信业务经营许可证 沪B2-20100067 | 广播电视节目制作经营许可证 (沪)字第416号
沪ICP备05001009号 | 信息网络传播视听节目许可证 0911625号
©2003 - VeryCD.com Some Rights Reserved. 上海隐志网络科技有限公司