经过大量的实验,我仍然不能让下面的脚本工作。我需要一些关于如何诊断这个特定Perl问题的指导。提前谢谢。
此脚本用于测试Office2007OCRAPI的使用:
use warnings;
use strict;
use Win32::OLE;
use Win32::OLE::Const;
Win32::OLE::Const->Load("Microsoft Office Document Imaging 12\.0 Type Library")
or
die "Cannot use the Office 2007 OCR API";
my $miDoc = Win32::OLE->new('MODI.Document')
or die "Cannot create a MODI object";
#Loads an existing TIFF file
$miDoc->Create('OCR-test.tif');
#Performs OCR with the OCR language set to English
$miDoc->OCR(LangId => 'miLANG_ENGLISH');
#Get the OCR result
my $OCRresult = $miDoc->{Images}->Item(0)->{Layout}{Text};
print $OCRresult;我做了个小测试。我加载了一个包含OCR信息的.MDI文件。我删除了OCR方法行并运行了脚本,得到了"print $OCRresult“的预期文本输出。但是,否则,Perl将错误抛出
Use of uninitialized value $OCRresult in print at E:\OCR-test.pl line 15我怀疑这句话是不是出了问题
$miDoc->OCR(LangId => 'miLANG_ENGLISH'); 我试着让父母空着,或者使用三个部分,比如“miLANG_ENGLISH”,“1,1”等等,但是没有任何运气。我还尝试使用Microsfot文档成像来测试我正在试验的TIF是否是文本可识别的,并且结果是肯定的。
我还有其他诊断方法吗?
或者,某个碰巧有Office 2007的人可以用任何有文本内容的jpg、bmp或tif图片测试我的代码,看看有什么问题吗?
提前谢谢。
更新
哈哈,我终于弄明白问题在哪里了,怎么解决的。@霍布斯,谢谢你的留言:)事情很有趣。当我试图回复你的评论时,我添加了Office文档成像2003 VBA语言参考网址的链接,然后再看一看那里的内容。以下信息吸引了我的眼球:
LangId can be one of the following MiLANGUAGES constants.
miLANG_CHINESE_SIMPLIFIED (2052, &H804)我更改了以下OCR方法行:
$miDoc->OCR('miLANG_ENGLISH',1,1);对此:
$miDoc->OCR(2052,1,1); 注意: 1.我在Windows上运行ActivePerl 5.10.0 (中文版本) 2.在此之前,我已经尝试过$miDoc->(9),但没有成功
突然,奇怪的是,写着“在E:\OCR-test.pl第15行打印中使用未初始化的值$OCRresult”的讨厌的错误完全消失了,OCRed文本出现在屏幕上。OCR结果并不令人满意,但参数"2052“指的是中文,TIF图像中包含所有英文。因此,我将参数更改为$miDoc->OCR(9,1,1),但这次没有运气。Windows向我抛出了这个错误:
unknown software exception (0x0000000d)我将TIF图像更改为包含所有汉字的TIF图像,并将参数更改为“$miDoc->OCR(2052,1,1)”,这一次一切都像预期的那样工作。OCR结果令人满意。
现在,我认为我的Office2007OCRAPI有点奇怪,如果有人碰巧运行了Windows (英文版)并安装了Office 2007,那么参数很可能不会出现异常错误。
$miDoc->OCR(9,1,1); 不管怎么说,我真的很高兴我终于把事情做好了。
发布于 2010-03-02 10:45:05
首先,我会尝试转储$miDoc->{Images}的值--它存在吗?如果它存在并且它是一个集合,它包含任何东西吗?如果里面有什么,那是什么?一个错误?或者仅仅是一个与你预期不同的结构呢?warn,Dumper,和一些探索都可以帮上很大的忙。
顺便说一句,如果你想做“现代”的事情,并且不介意从CPAN上抓取一个漂亮的工具,那么试试Devel::Dwarn吧--它使向stderr倾倒比以前更有趣:)
https://stackoverflow.com/questions/2361177
复制相似问题