问题标签 [modi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ocr - 如何让索引服务和 MODI 通过 OCR 生成全文?
我已配置索引服务来索引我的文件,其中还包括保存为高分辨率TIFF文件的扫描图像。我还安装了 MS Office 2003+ 并正确配置了 MS Office Document Imaging (MODI),因此我可以对我的图像执行OCR,甚至可以将OCR的文本嵌入到 TIFF 中。
索引服务能够索引和查找那些手动 OCR 并使用文本数据重新保存的TIFF -s(使用 MS Document Imaging 工具)。
事实证明,与 Windows XP SP2 一起部署的数据执行保护 (DEP) 认为 MODI 是恶意的,并拒绝让它发挥作用。我已经能够通过完全关闭 DEP 来让它工作,但我发现这个解决方案并不优雅。
在不禁用 DEP 的情况下,是否有更好的解决方案来完成这项工作?
c# - .NET OCR 处理图像
我正在尝试使用 MODI 对窗口程序进行 OCR。它适用于我使用 win32 互操作以编程方式抓取的屏幕截图,如下所示:
然后将此图像保存到文件中并像这样通过 MODI 运行:
这部分工作正常,但是,我不想 OCR 整个屏幕截图,只是其中的一部分。我尝试像这样以编程方式裁剪图像:
然后 OCRing 这个较小的图像,但是 MODI 抛出异常;'OCR 运行错误',错误代码是-959967087。
为什么 MODI 可以处理原始位图,但不能处理从中提取的较小版本?
asp.net - 如何在 ASP.Net Web 应用程序中使用 MODI?
我已经围绕 Microsoft Office Document Imaging COM API 编写了一个 OCR 包装库,并且在本地运行的控制台应用程序中,它在每次测试中都能完美运行。
可悲的是,当我们尝试将它与作为 IIS6 下的 ASP.Net Web 应用程序运行的 WCF 服务集成时,事情开始变得糟糕。我们在尝试释放 MODI COM 对象时遇到了问题,网上有很多例子对我们有帮助。
然而,问题仍然存在。如果我重新启动 IIS,并重新部署 Web 应用程序,前几次 OCR 尝试效果很好。如果我将其放置 30 分钟左右,然后再执行另一个请求,则会收到如下服务器故障错误:
服务器抛出异常。(来自 HRESULT 的异常:0x80010105 (RPC_E_SERVERFAULT)):在 MODI.DocumentClass.Create(String FileOpen)
从这一点开始,每个请求都将无法执行 OCR,直到我重置 IIS,然后循环再次开始。
我们在它自己的应用程序池中运行这个应用程序,它以具有本地管理员权限的身份运行。
更新:这个问题可以通过在进程外执行 OCR 来解决。似乎 MODI 库不能很好地处理托管代码,当涉及到自身清理时,因此在我的情况下为每个 OCR 请求生成新进程效果很好。
这是执行 OCR 的函数:
然后我在 using 块中实例化 ImageReader 的一个实例(它将在退出时调用 IDisposable.Dispose)
调用 Marshal.FinalReleaseComObject 应该指示 CLR 释放 COM 对象,所以我不知道是什么导致了我们的症状。
对于它的价值,在 IIS 之外运行此代码,例如控制台应用程序,一切似乎都是防弹的。它每次都有效。
任何可以帮助我诊断和解决此问题的提示都将是巨大的帮助,我会疯狂地投票!;-)
谢谢!
c# - 帮助调试 COM 错误?(使用 Microsoft Office Document Imaging 将 .mdi 文件转换为 .pdf 文件)
我认为我有一个使用 Microsoft Office Document Imaging 对象模型将 .mdi 文件转换为 PDF 的有效解决方案。解决方案在 Windows 服务中,但现在我遇到了一些错误,我无法跟踪信息。
我得到的例外是:
服务器抛出异常。(来自 HRESULT 的异常:0x80010105 (RPC_E_SERVERFAULT)) System.Runtime.InteropServices.COMException (0x80010105):服务器抛出异常。(来自 HRESULT 的异常:0x80010105 (RPC_E_SERVERFAULT))
在 DocumentStore.Mdi2PDF 的 MODI.DocumentClass.Create(String FileOpen)(字符串路径,字符串 newPath)
然后,在事件查看器中有以下应用程序错误:
错误应用程序 MyWindowsServiceName.exe,版本 1.0.0.0,时间戳 0x4b97f185,错误模块 mso.dll,版本 12.0.6425.1000,时间戳 0x49d65443,异常代码 0xc0000005,错误偏移量 0x0000bd8e,进程 id 0xa5c,应用程序启动时间 0x01cac08cf03。
这是进行转换的方法:
我从调用它的服务中删除了所有线程,因此只有主线程正在初始化 MODI 对象,但仍然出现错误,因此它似乎与线程无关。
我还构建了一个控制台应用程序来转换数百个文档并且没有得到异常。
那么,这似乎是由于创建了太多 MODI 对象的实例,而只是在 Service 中实例化造成的?完全没有道理。
有人对这些错误以及如何进一步调试它们有任何线索吗?
c# - 在 C# 中使用 MODI 读取图像 - 缺少长度为 1 的数字
我正在构建一个 C# 应用程序,在该应用程序中我试图从 gif 图像 (OCR) 中读取文本 - 我正在使用 MODI,图像有点像乐透优惠券(行和列中的随机数字)。我现在得到以下代码,它读取除单个数字(1、2、3 ...)以外的所有数字
我无法更改图像的内容,但我可以用上面的代码做任何事情,以便它可以读取单个数字吗?
c# - MODI.Image 来自(位图)图像未保存在硬盘上。
我正在编写一个用于数字识别的 OCR MODI 应用程序。它工作得很好,但我正在努力加快速度。
我需要直接从 Emgu.CV.UI.ImageBox 创建一个 MODI.Document 或一个 MODI.Image,而不是从硬盘加载它。
就像是
或者
有任何想法吗?
c# - MODI 泄漏内存
我有一个应用程序,我在其中使用 MODI 2007 对几个多页 tiff 文件进行 OCR。我发现,当我在包含几个好的 tiff 以及一些无法在 Windows 图片和传真查看器中打开的 tiff 的目录上启动它时,MODI 也无法 OCR 那些“坏”的 tiff。发生这种情况时,应用程序无法回收 MODI 用于 OCR 那些 tiff 的任何内存。在该工具尝试对太多这些“坏”tiff 进行 OCR 后,机器内存不足,应用程序崩溃。我已经尝试了几个来自网络的代码修复程序,据说可以修复任何 MODI 内存泄漏,但到目前为止,没有一个对我有用。我正在粘贴下面执行 OCRing 的代码部分:
c# - 为什么 OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true) 会导致 OCR 运行错误?
我正在使用 MODI 来读取 tiff 图像并对文本做我需要做的事情。有些图像工作正常,然后其他 tiff 图像总是导致该方法,
OCR(MODI.MiLANGUAGES.miLANG_ENGLISH,真,真)
失败。我对此进行了研究,并在参数列表中尝试了不同的变体,例如“假”、“假”。我也尝试过 SYSDEFAULT 而不是英语,但我仍然得到错误。谁能告诉我为什么它会在某些 tiff 图像上失败而不在其他图像上失败?
我做了一些研究并找到了这个答案:
一个可能的原因是 MODI 试图处理没有任何可识别文本的文件。空白文档,或只有图纸/涂鸦并且实际上是空白的文档,将导致此异常。
显然这还不够好,因为我无法拥有一个决定 OCR 某些图像而不是其他图像的应用程序。我处理了异常,但是 OCR 对象没有被初始化,所以我不能从那里做我需要做的事情。
这是一场血腥的噩梦!为什么该方法不能完成它的血腥工作,如果图像有一些不可读的页面,那么就忽略它们?我正在使用 Windows 7 Ultimate 和 Office 2007 Ultimate。
Visual Studio 版本是 2008 谢谢,
信息战
.net - MODI 的 OCR 替换
我最近一直在使用 MODI 的内置 OCR 功能来捕获窗口的文本。我使用窗口句柄,可以在任何区域获取文本,或者我可以获取我想要搜索的特定文本的坐标。
看起来 MODI 已经被贬低了,而且它不包含在我们现在使用的 office 2010 中,所以我需要找到一个新的 OCR 替代品。我可以使用其他好的库吗?
c# - 使用 DeleteAfterOpen 创建文件,并允许其他进程读取该文件
是否可以使用 .net 中的 FileStream 对象创建文件,指定 DeleteAfterClose 选项并允许读取该文件?
我试过使用:
但尝试读取的另一个对象会违反文件共享。
我正在尝试这样做,因为我正在创建文件(tif),然后使用 COM 对象(MODI)对图像执行 OCR。我的问题是,在我调用 MODI com 对象的 close 方法后,我仍然无法使用 System.File.Delete 方法删除文件,因为 MODI com 对象还没有完全完成。我想如果我可以使用 DeleteAfterClose 选项创建我的文件,并且仍然允许读取我设置的那个文件,我只是无法弄清楚如何通过共享冲突 - 如果它甚至可能的话。