开通会员
  • 尊享所有功能
  • 文件大小最高200M
  • 文件无水印
  • 尊贵VIP身份
  • VIP专属服务
  • 历史记录保存30天云存储
开通会员
您的位置:首页 > 帮助中心 > word pdf文字识别-如何将pdf格式文件转换成word格式文件?
帮助中心 >

word pdf文字识别-如何将pdf格式文件转换成word格式文件?

2022-12-02 17:39:39

如何将pdf格式文件转换成word格式文件?

如何将pdf格式文件转换成word格式文件?
1.office组件把pdf转成word:
可以利用office 2003中的microsoft office document imaging组件来实现pdf转word文档,也就是说利用word来完成该任务。方法如下:

用adobe reader打开想转换的pdf文件,接下来选择“文件→打印”菜单,在打开的“打印”窗口中将“打印机”栏中的名称设置为“microsoft office document image writer”,确认后将该pdf文件输出为mdi格式的虚拟打印文件。

注:如果没有找到“microsoft office document image writer”项,使用office 2003安装光盘中的“添加/删除组件”更新安装该组件,选中“office 工具 microsoft draw转换器”。

然后,运行“microsoft office document imaging”,并利用它来打开刚才保存的mdi文件,选择“工具→将文本发送到word”菜单,在弹出的窗口中选中“在输出时保持图片版式不变”,确认后系统会提示“必须在执行此操作前重新运行ocr。这可能需要一些时间”,不管它,确认即可。

注:对pdf转doc的识别率不是特别完美,转换后会丢失原来的排版格式,所以转换后还需要手工对其进行排版和校对工作。

以上仅在word2003中可用,其他版本没有microsoft office document image writer。

2.利用第三方工具软件:
scansoft pdf converter for microsoft word
下载地址:
http://www.mydown.com/soft/245/245551.html

3.asp.net实现将word转换pdf格式:
一:必备工具

安装必须的工具ms vs.net2003,ms office2003,adobe acrobat 7.0 professional,postscript.exe,gs811w32.exe

ms vs.net2003的安装不说明

ms office2003的安装不说明

adobe acrobat 7.0 professional安装说明

运行setup.exe文件,出现输入序列号,就运行注册机,用鼠标在第一行刷下就可以看见序列号,复制粘贴到adobe acrobat 7.0 professional安装程序对话框,安装到最后出现注册时,点击phone...将安装程序中显示的第二行序列号(第一行是刚才注册机生成的序列号)复制粘贴到注册机的第二行,点击右边的按钮,再用鼠标刷第三行授权号就出来了,将其复制粘贴到安装程序的最后一行,完成安装注册!

postscript.exe默认安装就可以了,它是一个pdf转换时所需要的脚本

gs811w32.exe默认安装就可以,它其实是个pdf虚拟打印机的驱动

二:配置虚拟打印机

进入windows的控制面板,进入打印机,点击"添加打印机"图标.在安装对话框上"按一步",出现选择打印机时,在制造商一栏中选择"generic",在打印机一栏中,选择"ms publisher color printer",然后一路按下一步,知道安装结束.

三:开始写第一个程序(脚本程序)

为什么要使用脚本程序进行转换呢,其实实际测试过程中,使用pdf distiller的对象引用到c#后,转换成功,但整个pdf distiller对象不能释放,第二次再转换时,就发生了错误,故此处使用脚本程序实现转换.这样我们只要在c#的程序中调用脚本程序就可以实现word到pdf的转换。

宿主脚本文件名:convertdoc2pdf.js

脚本文件内容:

var files = wscript.arguments;
var fso = new activexobject("scripting.filesystemobject");
var word = new activexobject("word.application");
var pdf = new activexobject("pdfdistiller.pdfdistiller.1");
word.activeprinter = "ms publisher color printer";

//files(0) 为word文档文件名
//files(1) 为,转换后需要保存的路径
//调用fso.getbasename(files(0))后,为无路径,无扩展名,的文件名
//files.length为文件参数的个数,使用循环可以支持多个word文档的转换

var docfile = files(0);
var psfile = files(1) + fso.getbasename(files(0)) + ".ps";
var pdffile = files(1) + fso.getbasename(files(0)) + ".pdf";
var logfile = files(1) + fso.getbasename(files(0)) + ".log";

try{
var doc = word.documents.open(docfile);
//word文件转成ps文件;
word.printout(false, false, 0, psfile);
doc.close(0);

//ps文件转成pdf文件;
pdf.filetopdf(psfile,pdffile,"");

fso.getfile(psfile).delete();//删除ps脚本文件
fso.getfile(logfile).delete();//删除转换的日志文件

word.quit();
wscript.echo("isuccess");//成功
wscript.quit(0);
}
catch(x)
{
word.quit();
wscript.echo("isfail");//失败
wscript.quit(0);
}

然后测试该脚本程序

启动ms-dos,输入如下命令:

c:\>cscript //nologo c:\convertdoc2pdf.js c:\test.doc c:\

说明:

运行成功后将看到test.pdf文档了

c:\test.doc参数对应的是脚本程序中的files(0)

c:\参数对应的是脚本程序中的files(1)

你可以安照该脚本改写成,支持多个参数,使用for循环,一次转换多个word文档,此处没有使用多个文件转换功能,是考虑到,该段脚本放在c#的线程中执行,这样一来也可以转换多个word文档.

四:使用c#调用convertdoc2pdf.js脚本

新建一个c#的windows应用程序,添加一个按钮button1

添加一个函数,函数名startconvertpdf

public void startconvertpdf()
{
process proc = new process();
proc.startinfo.filename = "cmd.exe";
proc.startinfo.workingdirectory = @"c:\";
proc.startinfo.createnowindow = true;
proc.startinfo.useshellexecute = false;
proc.startinfo.redirectstandardinput = true; //输入重定向

proc.start();
proc.standardinput.writeline(@"cscript //nologo c:\convertdoc2pdf.js c:\test.doc c:\");
proc.standardinput.writeline("exit");
proc.waitforexit();
}

然后在按钮的click事件中添加调用线程的代码

private void button1_click(object sender, system.eventargs e)
{
//定义线程序
thread thconvert = new thread(new threadstart(startconvertdata));
thconvert.start();
}

注意:在测试上面的c#程序时,必须添加如下命名空间

using system.diagnostics;
using system.threading;

五:健壮的c#调用代码(实际考虑,可放在b/s系统中)

完成第4步的c#测试后,细心的读者,可能看到一点问题,那就是如何得到脚本运行后输出的结果,如何给线程中调用的startconvertdata方法传递参数

1:传递参数,此话说来也可用一篇教程告诉大家线程中方法如何来传递参数,现在就讲一个方案,此种方案很多,我采用一个类,初始化这个类,然后调用该类的方法作为线程执行的方法

2:得到脚本的输出结果,使用process对象的输出重定向,就是说改变输出方向,使脚本不输出到控制台(ms-dos窗口),而是重定向输出到c#程序中,并采用线程的异步回调方法,显示脚本运行结果。

添加一个新类,类名为topdf

using system;
using system.diagnostics;
using system.componentmodel;
using system.windows.forms;
using system.data;

namespace doc2pdf
{
public class topdf
{
private string strword = "";//此处的word文件不含路径
private string spath = "";
public string sexecresult = "";
public bool bsuccess = false;

public topdf(string sparamword,string sparampath)
{
strword = sparamword;
spath = sparampath;
}

public void startconvertpdf()
{
process proc = new process();
proc.startinfo.filename = "cmd.exe";
proc.startinfo.workingdirectory = spath;
proc.startinfo.createnowindow = true;
proc.startinfo.useshellexecute = false;
proc.startinfo.redirectstandardinput = true;//标准输入重定向
proc.startinfo.redirectstandardoutput = true;//标准输出重定向

proc.start();
proc.standardinput.writeline("cscript //nologo "+spath+"convertdoc2pdf.js "+spath+strword+ " "+spath);
proc.standardinput.writeline("exit");
sexecresult = proc.standardoutput.readtoend();//返回脚本执行的结果
proc.waitforexit();
proc.close();

}

public void endconvertpdf(system.iasyncresult ar)//ar参数必须写,是线程执行完成后的回调函数
{
if(sexecresult.indexof("isuccess")!=-1)bsuccess=true;
else if(sexecresult.indexof("isfail")!=-1)bsuccess=false;
//如果放在b/s系统,你可以在此处写数据库,是成功还是失败,并用一个webservice程序不断检查数据库,此webservice程序不放在该回调用函数中
//如果放在c/s系统,回调函数可以不放在类中,以便在窗体程序中调用结果
}
}
}

改写原来的button1_click事件中的代码

private void button1_click(object sender, system.eventargs e)
{
topdf my2pdf = new topdf("test.doc","c:\\");
threadstart thstartconvert = new threadstart(my2pdf.startconvertpdf); //开始异步调用线程
thstartconvert.begininvoke(new asynccallback(my2pdf.endconvertpdf),null);//设置异步线程的回调函数

//如果需要转换多个word,你可以用循环
//如果是b/s系统,可以将本段代码放在aspx中,并结合客户端的无刷新显示数据的技术,不断访问webservice程序,以确定pdf是否转换成功或失败
}

六:编写更加健壮的c#调用代码(实际考虑,可放在windows的服务程序中)

实际使用时,由于转化pdf时cpu的占用率很高,考虑只在同一时间转换一篇word文档,放弃异步线程的回调函数的使用,考虑一个windows的服务程序。

写一个函数checkdata2convert(),不断的检查没有转换的word文档,并使用循环调用topdf类中执行转换方法startconvertpdf

//以下给出,泛代码,用户按照自己的需求,填写完整即可
//bool bstart为全局变量,控制循环的进入与退出
//例:18:30开始检查并转换,那么18:30时,bstart=true;并启动转换线程
//6:30停止转换线程,bstart=fasle;

private void checkdata2convert()
{
//检查指定目录下的没有转换的word文档,你同样可以检查数据库中记录的没有转换的word文档
string spath = system.threading.thread.getdomain().basedirectory; //当前的路径
while(bstart)
{
int ifilecount = checkword(); //checkword为一个方法,检查当前没有转换的word文档,返回没有转换的文件数,该方法的代码由读者自己编写
for(int i=0;i<ifilecount;i++)
{
string sword = getwordfilename(i) //getwordfilename为一个方法,返回一个不带路径的word文件名,该方法的代码由读者自己编写
//topdf类中的startconvertpdf()方法使用的是不带路径的word文件名
topdf my2pdf = new topdf(sword ,spath);
my2pdf.startconvertpdf();

if(my2pdf.sexecresult.indexof("isuccess")!=-1)
{
//成功,写日志,或回写数据库
}
else if(my2pdf.sexecresult.indexof("isfail")!=-1)
{
//失败,写日志,或回写数据库
}

}

if(!bstart)break;
thread.sleep(1000);
}
}

然后在服务的开始事件中,启动线程

protected override void onstart(string[] args)
{
//可以使用一个开始定时器,检查是否到开始时间,时间一到,就开始执行线程,此处的开始执行线程可以放在开始定时事件中
//可以使用一个结束定时器,检查是否到结束时间,时间一到,就结束线程,结束线程的代码可以放在结束定时事件中
//注意:应该使用组件中的定时器,而不是windows的forms中的定时器
//该定时器的类名为system.timers.timer,千万别搞错,不然执行不会正常的
bstart = true;
thread thconvert = new thread(new threadstart(startconvertdata));
thconvert.start();
}

然后在服务的结束事件中,设置停止线程的标识bstart= false

protected override void onstop()
{
bstart = false;
//为何次处不停止线程呢,因为考虑到,现在线程正在转换word文档,但没有结束,所以只设置停止标识,转换完成后,线程也执行结束了.
}

如何将pdf文档转换为word文档

如何将pdf文档转换为word文档
如何将pdf格式转化为word格式- -

首先,pdf文档本身分为以下几类:
1.非加密的pdf文档 这类文档是作者公开在网路上流行的文档,其内容是允许
读者拷贝粘贴的,当然这其中要设计到合理的引用注释。主要有两种类型,一个是编辑
好的可以对文字部分操作的文档,另外一种是扫描格式的。对于前一种文档adobe公司出
品的pdf阅读和编辑软件都可以对文字部分进行选取,拷贝和粘贴,当然图片部分也可以
。通常我们写文章需要引用或编辑的时候,有选择的选取其中的文字就可以了,很方便
,也没有必要全文选取。当然,如果处于版面要求以及某种目的需要快速的全文转化,
也是完全可以实现的。
主要方法包括:
a. adobe公司出品的pdf创建和编辑软件adobe acrobat(不是reader)本身就
具有将pdf文档转化为word文档的能力。只要我们打开菜单栏,将文档另存为doc格式或
rtf格式就可以了。但是说实话,这种方法得到的文档只能够说是变成了一堆字而已,原
来的版式都没有了。不过这也不失为一种方法。
b. 借助于其它软件实现高质量的pdf文档向word文档的转换。其实现在能够实
现这种功能的软件很多,我只介绍其中的两个,而这两个也绝对是具有业界领先水平的
。它们是scansoft公司出品的scansoft pdf converter和abbyy公司出品的abbyy pdf
transformer。当然后者作为ocr领域的业界大企业,还有一些具有此功能的更高级的软
件,但是这个已经足以应付大部分的转换了。
这两个软件能够快速实现对于可拷贝的pdf文档的迅速转化,而且绝对是高
质量的全文转换。经过转换得到的word文档,排版和原来的pdf文档几乎没有分别,绝对
是让你震惊的水准,需要全文转换的绝对推荐使用!
c. 对于非加密扫描型pdf文档来说,其上面包含的文字实际上是属于图片的一
部分,我们如果想大量的一次性得到这些文字,必须借助于ocr软件的辅助,这种软件种
类繁多,中文外文的都有。当然,对于英文的识别效率应该好于对于中文的,这也和选
择的软件关系很大。而且,最重要的是,pdf文档中文字的清晰度。
2.加密型pdf文档 加密型pdf文档通常不允许读者对其进行任何拷贝和编辑,
包括其中的文字和图片。这也是对版权的保护。如果你非要违背作者意图来获得其中的
文字,使用的方法主要有两种:第一就是借助于pdf加密破解软件,第二种就是手动往电
脑里面敲吧。推荐后者,毕竟该尊重的一定要尊重。
参考资料:引自 http://publishblog.blogchina.com/blog/tb.b?diaryid=1146714

pdf里文本都是图片形式的,请问怎么把它弄到word里 -...

pdf里文本都是图片形式的,请问怎么把它弄到word里 -...
有两种情况:
1.根本不存在文本,这个内容就是一个图片(在pdf里以xobject形式存在),谁也没办法拿到文字信息.
2.是文本,可以用foxitreader等工具把文本选择,拷贝,粘贴出来.要修改就用foxit pdf editor就可以修改

另:如果pdf稳当禁止这样操作的话,只能把pdf转化成word来处理了.一样针对第二种情况

跪求pdf转word的软件 要求文字可以编辑的 不是图片...

跪求pdf转word的软件 要求文字可以编辑的 不是图片...
pdf格式的文件如何转换成word文档(2种方法)
1、用scansoft pdf converter pro v3.0 特别版
http://down.chinageren.com/d/asp_php_cgi_jsp_net_soft_5595.html
为pdf转换提供了完整的解决方案,能合并,转换,直接编辑pdf文件
2、可以利用office 2003中的microsoft office document imaging组件来实现pdf转word文档,
也就是说利用word来完成该任务。方法如下:
用adobe reader打开想转换的pdf文件,接下来选择“文件→打印”菜单,在打开的“打印”窗口中将“打印机”
栏中的名称设置为“microsoft office document image writer”,确认后将该pdf文件输出为mdi格式的虚拟打印文件。
注:如果没有找到“microsoft office document image writer”项,使用office 2003安装光盘中的“添加/删除
组件”更新安装该组件,选中“office 工具 microsoft draw转换器”。
然后,运行“microsoft office document imaging”,并利用它来打开刚才保存的mdi文件,选择“工具→将文本
发送到word”菜单,在弹出的窗口中选中“在输出时保持图片版式不变”,确认后系统会提示“必须在执行此操作前重
新运行ocr。这可能需要一些时间”,不管它,确认即可。
以上仅在word2003中可用,其他版本没有microsoft office document image writer。
microsoft office 2003 with sp2 大企业版 http://down.htcnc.net/software/catalog33/276.html

请问:如果把书上的文字用扫描仪扫到电脑上,文字是否...

请问:如果把书上的文字用扫描仪扫到电脑上,文字是否...
扫描文字,结果以图片格式(.bmp)存入电脑。然后使用orc识别系统进行转换,最终用word进行修改编辑。下面教你如何使用orc:

ocr是英文optical character recognition的缩写,翻译成中文就是通过光学技术对文字进行识别的意思, 是自动识别技术研究和应用领域中的一个重要方面。它是一种能够将文字自动识别录入到电脑中的软件技术,是与扫描仪配套的主要软件,属于非键盘输入范畴,需要图像输入设备主要是扫描仪相配合。现在ocr主要是指文字识别软件,在1996年清华紫光开始搭配中文识别软件之前,市场上的扫描仪和ocr软件一直是分开销售的,专业的ocr软件谠缧┦焙蚵舻帽壬�枰腔挂�蟆k孀派�枰欠直媛实奶嵘��ocr软件也在不断升级,扫描仪厂商现在已把专业的ocr软件搭配自己生产的扫描仪出售。ocr技术的迅速发展与扫描仪的广泛使用是密不可分的,近两年随着扫描仪逐渐普及和ocr技术的日臻完善,ocr己成为绝大多数扫描仪用户的得力助手。

一、ocr技术的发展历程

自20世纪60年代初期出现第一代ocr产品开始,经过30多年的不断发展改进,包括手写体的各种ocr技术的研究取得了令人瞩目的成果,人们对ocr产品的功能要求也从原来的单纯注重识别率,发展到对整个ocr系统的识别速度、用户界面的友好性、操作的简便性、产品的稳定性、适应性、可靠性和易升级性、售前售后服务质量等各方面提出更高的要求。

ibm公司最早开发了ocr产品,1965年在纽约世界博览会上展出了ibm公司的ocr产品――ibml287。当时的这款产品只能识别印刷体的数字、英文字母及部分符号,并且必须是指定的字体。20世纪60年代末,日立公司和富士通公司也分别研制出各自的ocr产品。全世界第一个实现手写体邮政编码识别的信函自动分拣系统是由日本东芝公司研制的,两年后nec公司也推出了同样的系统。到了1974年,信函的自动分拣率达到92%左右,并且广泛地应用在邮政系统中,发挥着较好的作用。1983年日本东芝公司发布了其识别印刷体日文汉字的ocr系统ocrv595,其识别速度为每秒70~100个汉字,识别率为99.5%。其后东芝公司又开始了手写体日文汉字识别的研究工作。

中国在ocr技术方面的研究工作相对起步较晚,在20世纪70年代才开始对数字、英文字母及符号的识别技术进行研究,20世纪70年代末开始进行汉字识别的研究。1986年,国家863计划信息领域课题组织了清华大学、北京信息工程学院、沈阳自动化所三家单位联合进行中文ocr软件的开发工作。至1989年,清华大学率先推出了国内第一套中文ocr软件--清华文通th-ocr1.0版,至此中文ocr正式从实验室走向了市场。清华ocr印刷体汉字识别软件其后又推出了th-ocr 92高性能实用简/繁体、多字体、多功能印刷汉字识别系统,使印刷体汉字识别技术又取得重大进展。到1994年推出的th-ocr 94高性能汉英混排印刷文本识别系统,则被专家鉴定为“是国内外首次推出的汉英混排印刷文本识别系统,总体上居国际领先水平”。上个世纪90年代中后期,清华大学电子工程系提出并进行了汉字识别综合研究,使汉字识别技术在印刷体文本、联机手写汉字识别、脱机手写汉字识别和脱机手写数字符号识别等领域全面地取得了重要成果。具有代表性的成果是th-ocr 97综合集成汉字识别系统,它可以完成多文种(汉、英、日)印刷文本、联机手写汉字、脱机手写汉字和手写数字的识别输入。几年来,除清华文通th-ocr外,其它如尚书sh-ocr等各具风格的ocr软件也相继问世,中文ocr市场稳步扩大,用户遍布世界各地。

可以说目前印刷体ocr的识别技术已经达到较高水平。ocr产品已由早期的只能识别指定的印刷体数字、英文字母和部分符号,发展成为可以自动进行版面分析、表格识别,实现混合文字、多字体、多字号、横竖混排识别的强大的计算机信息快速录入工具。对印刷体汉字的识别率达到98%以上,即使对印刷质量较差的文字其识别率也达到95%以上。可识别宋体、黑体、楷体、仿宋体等多种字体的简、繁体,并且可以对多种字体、不同字号混合排版进行识别,对手写体汉字的识别率达到70%以上。特别是我国的汉字ocr技术经过十几年的努力,克服了起步晚、汉字字符集异常庞大等困难,单字的识别速度(指在单位时间内所完成的从特征提取到识别结果输出的字数)可以达到70字/秒以上。由于印刷体ocr汉字识别技术已经比较成熟,所以ocr产品被广泛地应用在新闻、印刷、出版、图书馆、办公自动化等各个行业。

专业型ocr产品多是面向特定的行业,即适用于每天需处理大量表格信息录入的部门,如邮政、税务、海关、统计等等。这种面向特定行业的专业型ocr系统,格式较为固定,识别的字符集相对较小,经常与专用的输入设备结合使用,因此具有速度快、效率高等特点,比如邮件自动分拣系统等。

手写文稿的识别直到1996、1997年才开始有产品问世,而且是作为印刷文稿识别产品的一项附加功能提供的。由于人写字的习惯千差万别,实现自由手写体识别相当困难,所以手写体ocr技术的使用领域是联机手写体识别,即人一边写,计算机一边识别,是一种实时识别方式。

二、ocr的基本原理

简单地说,ocr的基本原理就是通过扫描仪将一份文稿的图像输入给计算机,然后由计算机取出每个文字的图像,并将其转换成汉字的编码。其具体工作过程是,扫描仪将汉字文稿通过电荷耦合器件ccd将文稿的光信号转换为电信号,经过模拟/数字转换器转化为数字信号传输给计算机。计算机接受的是文稿的数字图像,其图像上的汉字可能是印刷汉字,也可能是手写汉字,然后对这些图像中的汉字进行识别。对于印刷体字符,首先采用光学的方式将文档资料转换成原始黑白点阵的图像文件,再通过识别软件将图像中的文字转换成文本格式,以便文字处理软件的进一步加工。其中文字识别是ocr的重要技术。

1.ocr识别的两种方式

与其它信息数据一样,在计算机中所有扫描仪捕捉到的图文信息都是用0、1这两个数字来记录和进行识别的,所有信息都只是以0、1保存的一串串点或样本点。ocr识别程序识别页面上的字符信息,主要通过单元模式匹配法和特征提取法两种方式进行字符识别。

单元模式匹配识别法(pattern matching)是将每一个字符与保存有标准字体和字号位图的文件进行不严格的比较。如果应用程序中有一个已保存字符的大数据库,则应用程序会选取合适的字符进行正确的匹配。软件必须使用一些处理技术,找出最相似的匹配,通常是不断试验同一个字符的不同版本来比较。有些软件可以扫描一页文本,并鉴别出定义新字体的每一个字符。有些软件则使用自己的识别技术,尽其所能鉴别页面上的字符,然后将不可识别的字符进行人工选择或直接录入。

特征提取识别法(feature extraction)是将每个字符分解为很多个不同的字符特征,包括斜线、水平线和曲线等。然后,又将这些特征与理解(识别)的字符进行匹配。举个简单的例子,应用程序识别到两条水平横线,它就会“认为”该字符可能是“二”。特征提取法的优点是可以识别多种字体,例如中文书法体就是采用特征提取法实现字符识别的。

多数ocr应用软件都加入了语法智能检查功能,这种功能进一步提高了识别率。它主要通过上下文检查法实现拼写和语法的纠正,在文字识别时,ocr应用程序会做多次的上下文衔接性检查,根据程序中已经存在的词组、固定的用词顺序,对应的检查字符串的用词字。比较高级的应用软件会自动用它“认为”正确的词语替换错误词语,纠正语句意思。

2.文字识别的几个步骤

文字识别包括以下几个步骤:图文输入、预处理、单字识别和后处理等。

(1)图文输入

是指通过输入设备将文档输入到计算机中,也就是实现原稿的数字化。现在用得比较普遍的设备是扫描仪。文档图像的扫描质量是ocr软件正确识别的前提条件。恰当地选择扫描分辨率及相关参数,是保证文字清楚、特征不丢失的关键。此外,文档尽可能地放置端正,以保证预处理检测的倾斜角小,在进行倾斜校正后,文字图像的变形就小。这些简单的操作,会使系统的识别正确率有所提高。反之,由于扫描设置不当,文字的断笔过多可能会分检出半个文字的图像。文字断笔和笔画粘连会造成有些特征丢失,在将其特征与特征库比较时,会使其特征距离加大,识别错误率上升。

(2)预处理

扫描一幅简单的印刷文档的图像,将每一个文字图像分检出来交给识别模块识别,这一过程称为图像预处理。预处理是指在进行文字识别之前的一些准备工作,包括图像净化处理,去掉原始图像中的显见噪声(干扰)。主要任务是测量文档放置的倾斜角,对文档进行版面分析,对选出的文字域进行排版确认,对横、竖排版的文字行进行切分,每一行的文字图像的分离,标点符号的判别等。这一阶段的工作非常重要,处理的效果直接影响到文字识别的准确率。

版面分析是对文本图像的总体分析,是将文档中的所有文字块分检出来,区分出文本段落及排版顺序,以及图像、表格的区域。将各文字块的域界(域在图像中的始点、终点坐标),域内的属性(横、竖排版方式)以及各文字块的连接关系作为一种数据结构,提供给识别模块自动识别。对于文本区域直接进行识别处理,对于表格区域进行专用的表格分析及识别处理,对于图像区域进行压缩或简单存储。行字切分是将大幅的图像先切割为行,再从图像行中分离出单个字符的过程。

(3)单字识别

单字识别是体现ocr文字识别的核心技术。从扫描文本中分检出的文字图像,由计算机将其图形、图像转变成文字的标准代码,是让计算机“认字”的关键,也就是所谓的识别技术。就像人脑认识文字是因为在人脑中已经保存了文字的各种特征,如文字的结构、文字的笔画等。要想让计算机来识别文字,也需要先将文字的特征等信息储存到计算机里,但要储存什么样的信息及怎样来获取这些信息是一个很复杂的过程,而且要达到非常高的识别率才能符合要求。通常采用的做法是根据文字的笔画、特征点、投影信息、点的区域分布等进行分析。

中国汉字常用的就有几千,识别技术就是特征比较技术,通过和识别特征库的比较,找到特征最相似的字,提取该文字的标准代码,即为识别结果。比较是人们认识事物的一种基本方法,汉字识别也是通过比较找出汉字之间的相同、相似、相异,把握其量和质的关系,以及时间与空间的关系等。对于大字符集的汉字一般采用多级分类,多特征、全方位动态匹配求相似集,以保证分类率高、适应性强、稳定性好;细分类重点在于对相似集求异匹配、加权处理、结构判别,定量、定性分析,以及前后联接词的关系,最后进行判别。汉字识别实质上是比较科学或认知科学在人工智能方面的应用,其关键技术是识别特征库。计算机有了这样的一个特征库,才能完成认字的功能。

在图像文档的版面中,除了有文字、图片,有时还会有表格存在,为了使识别后的表格数字化,需要在版面分析过程中,对表格域进行特殊的处理,它包括对表格线的结构信息的提取,对表格内文字域的分检,完成对表格线和对文字域的识别,并根据表格线的数字化生成不同的文件格式。由于文档中的表格随意性大,格式多样,有封闭式的,也有开放式的,特别是表格中的斜线,给表格分析造成一定的困难。

(4)后处理

后处理是指对识别出的文字或多个识别结果采用词组方式进行上下匹配,即将单字识别的结果进行分词,与词库中的词组进行比较,以提高系统的识别率,减少误识率。

汉字字符识别是文字识别领域最为困难的问题,它涉及模式识别、图像处理、数字信号处理、自然语言理解、人工智能、模糊数学、信息论、计算机、中文信息处理等学科,是一门综合性技术。近几年来,印刷汉字识别系统的单字识别正确率已经超过95%,为了进一步提高系统的总体识别率,扫描图像、图像的预处理以及识别后处理等方面的技术也都得到了深入的研究,并取得了长足的进展,有效地提高了印刷汉字识别系统的总体性能。清华大学在此方面的研究成果突出,已经成为世界上的最具权威的机构之一。目前,清华紫光的全系列扫描仪中都配装了清华ocr千禧版软件,它在识别率、表格识别甚至规范手写体的识别方面,均达到了较高水平。

三、ocr文字识别技巧

在最近几年中,ocr识别技术随着扫描仪的普及得到了飞速的发展,扫描、识别软件的性能不断强大并向智能化不断升级发展。但是要想快速地获取正确的扫描结果,得到高效率的文字录入,必须认真学习有关知识,结合实践经验,摸索出自己的全套解决方案。有时我们在作文字识别工作时识别率非常低,根本达不到软件所说的95%以上,请先不要责怪硬件或软件,其实这是没有掌握好扫描及ocr识别技巧的原因。

下面是文字识别操作中经常用到了一些方法和技巧。

1.分辨率的设置是文字识别的重要前提。一般来讲,扫描仪提供较多的图像信息,识别软件比较容易得出识别结果。但也不是扫描分辨率设得越高识别正确率就越高。选择300dpi或400dpi分辨率,适合大部分文档扫描。注意文字原稿的扫描识别,设置扫描分辨率时千万不要超过扫描仪的光学分辨率,不然会得不偿失。下面是部分典型设置,仅供参考。
(1)1、2、3号字的文章段,推荐使用200dpi。
(2)4、小4、5号字的文章段,推荐使用300dpl
(3)小5、6号字的文章段,推荐使用400dpl
(4)7、8号字的文章段,推荐使用600dpi。

2. 扫描时适当地调整好亮度和对比度值,使扫描文件黑白分明。这对识别率的影响最为关键,扫描亮度和对比度值的设定以观察扫描后的图像中汉字的笔画较细但又不断开为原则。进行识别前,先看看扫描得到的图像中文字质量如何,如果图像存在黑点或黑斑时或文字线条很粗很黑,分不清笔画时,说明亮度值太小了,应该增加亮度值在试试;如果文字线条凹凸不平,有断线甚至图像中汉字轮廓严重残缺时,说明亮度值太大了,应减小亮度后再试试。

3.选好扫描软件。选一款好的适合自己的ocr软件是作好文字识别工作的基础,一般不要使用扫描仪自带的oem软件,oem的ocr软件的功能少、效果差,有的甚至没有中文识别,经过比较,我认为清华紫光ocr2003专业版和尚书ocr6.0文本自动识别输入系统的识别能力与使用功能更突出一些。再选一个图像软件,ocr软件不是有扫描接口吗?为什么还找图像软件?第一,ocr软件不能识别所有的扫描仪;第二,也是最关键的,利用图像软件的扫描接口扫描出来的图像便于处理;一般选用photoshop。

4.如果要进行的文本是带有格式的,如粗体、斜体、首行缩进等,部分ocr软件识别不出来,会丢失格式或出现乱码。如果必须扫描带有格式的文本,事先要确保使用的识别软件是否支持文字格式的扫描。也可以关闭样式识别系统,使软件集中注意力查找正确的字符,不再顾及字体和字体格式。
您已连续签到 0 天,当前积分:0
  • 第1天
    积分+10
  • 第2天
    积分+10
  • 第3天
    积分+10
  • 第4天
    积分+10
  • 第5天
    积分+10
  • 第6天
    积分+10
  • 第7天

    连续签到7天

    获得积分+10

获得10积分

明天签到可得10积分

咨询客服

扫描二维码,添加客服微信