3

多くの実験を行った後でも、次のスクリプトを機能させることができません。この特定のPerlの問題を診断する方法についてのガイダンスが必要です。前もって感謝します。

このスクリプトは、Office 2007OCRAPIの使用をテストするためのものです。

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'); 

私は、parensを空のままにするか、'miLANG_ENGLISH'、1,1などの3つの装飾を使用してみましたが、運がありませんでした。また、Microsfot Office Document Imagingを使用して、実験しているTIFがテキストで認識可能であり、結果が陽性であるかどうかをテストしてみました。

では、他にどのような診断方法がありますか?

または、Office 2007を使用している人が、テキストコンテンツを含むjpg、bmp、またはtif画像を使用してコードをテストし、問題がないかどうかを確認できますか?

前もって感謝します。

アップデート

ハハ、私はついに問題がどこにあるのか、そしてどうすればそれを解決できるのかを理解しました。@ hobbs、コメントを残してくれてありがとう:)物事は面白いです。あなたのコメントに返信しようとしたときに、Office Document Imaging 2003 VBA言語リファレンスのURLのリンクを追加し、そこにあるものをもう一度調べました。そして、次の情報が私の目に留まりました。

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 XP(中国語版)でActivePerl 5.10.0を実行しています。2。この前に、$ miDoc->(9)を試しましたが、運がありませんでした。

そして突然、魔法のように、「初期化されていない値$ OCRを使用するとE:\ OCR-test.plの15行目で印刷されます」という厄介なエラーが完全に消え、OCRedテキストが画面に表示されました。OCRの結果は満足のいくものではありませんでしたが、パラメータ「2052」は中国語を参照しており、TIF画像にはすべて英語が含まれています。そこで、パラメータを$ miDoc-> OCR(9,1,1)に変更しましたが、今回は運がありませんでした。Windowsは私にこのエラーを投げました:

unknown software exception (0x0000000d)

TIF画像をすべての漢字を含む画像に変更し、パラメーターを「$ miDoc-> OCR(2052,1,1);」に変更しました。繰り返しになりますが、今回はすべてが期待どおりに機能しました。OCRの結果は満足のいくものでした。

今、私のOffice 2007 OCR APIには何か奇妙なことがあると思います。たまたま、Windows XP(英語版)を実行していてOffice 2007をインストールした人が、パラメータでその例外エラーに遭遇することはおそらくないでしょう。

$miDoc->OCR(9,1,1); 

とにかく、私はついに物事が機能するようになったことを本当に嬉しく思います:D

4

1 に答える 1

3

手始めに、-の値をダンプしてみます$miDoc->{Images}-それは存在しますか?それが存在し、それがコレクションである場合、それは何かを含んでいますか?それが何かを含んでいるなら、それは何ですか?エラー?それとも、あなたが期待しているものとは異なる構造ですか?warn、、Dumperおよび少しの探索は大いに役立つ可能性があります。

ちなみに、「モダン」なことをしたいが、CPANから気の利いたツールを手に入れてもかまわない場合は、試しDevel::Dwarnてみてください。これにより、stderrへのダンプが以前よりもさらに楽しくなります:)

于 2010-03-02T10:45:05.143 に答える