Delphi调用Office2007的OCR识别功能
时间:2013-02-23 15:06来源:未知 作者:老陕 点击: 次
创建MODI.Document,报未注册 EOleException 核心dll: C:\Program Files\Common Files\Microsoft Shared\MODI\12.0 下 MDIVWCTL.dll (核心COM) MSPGIMME.dll 核心MDIVWCTL.DLL已reg,核心代码运行没问题,主窗体上丢了一个TMiDocView可视OLE控件,报没有注册
创建MODI.Document,报未注册 EOleException
MDIVWCTL.dll (核心COM)
MSPGIMME.dll
核心MDIVWCTL.DLL已reg,核心
代码运行没问题,主
窗体上丢了
一个TMiDocView可视OLE
控件,报没有注册
Article/yufa' target='_blank'>
类型EOleException
2. 纯
接口方式 CoDocument.Create; IDocument.Create('
文件名')
3. CreateOLEOBject('MODI.DOcument')
动态创建comser
ver as IDocument
4. way1 中指定 MiDoc.FileName, MiDoc.Document as IDocument
5. IDocument.Create时try 保护 except中
再次 create;
偶尔能调过该问题,Create成功, 但是运行多次后 exception明显变多
以上组合均未能解决问题
最后解决办法:
1、 安装Office2007,打上修复补丁,测试通过(未测试) 2、 直接调用JS脚本解决(效率很差,临时解决,不想试验方案1); 代码如下:
{调用:
var
str: string;
begin
str := ParsePhone('c:\\test.jpg');
ShowMessage(str);
end;
}
function ParsePhone(
imagePath: WideString): string;
function RunJs(const JsCode, JsVar: string): string;
var
script: OleVariant;
begin
try
script := CreateOleObject('ScriptControl');
script.Language := 'JavaScript';
script.ExecuteStatement(JsCode);
Result := script.eval_r(JsVar);
except
Result := '';
end;
end;
var
jsCode: string;
begin
jsCode := 'function ParsePhone(path)' +
'{' +
'var oModi = new ActiveXObject("MODI.Document");' +
'oModi.Create(path);' +
'oModi.Images(0).OCR(9);' +
'var oLy = oModi.Images(0).Layout;' +
'return oLy.Text;' +
'delete oLy;' +
'delete oModi;' +
'}';
Result := RunJs(jsCode, 'ParsePhone("' + imagePath + '");');
end;
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。