zoukankan      html  css  js  c++  java
  • 程序员调用MODI的正确姿势(续)

    作者:马健
    邮箱:stronghorse_mj@hotmail.com
    主页:http://www.comicer.com/stronghorse
    发布:2021.02.21

    一年前随着V1版MODI_Engine的发布,我发表了《程序员调用MODI的正确姿势》,说明为什么要通过MODI_Engine这样的桥接器来调用MODI进行OCR:
    https://www.cnblogs.com/stronghorse/p/12302662.html

    经过一年的实际应用,发现V1版MODI_Engine存在下列问题:

    1. 为了偷懒,V1采用了WM_COPYDATA消息机制实现进程间通信(interprocess communications,IPC),这就要求V1版MODI_Engine必须有消息队列,所以采用了基于隐藏对话框的GUI架构。
    2. 由于V1版MODI_Engine是一个带消息队列的GUI程序,即使其主界面(对话框)不可见,但在启动它时,操作系统仍然会尝试将用户交互的焦点(focus)转移给它。这就可能造成一个问题:如果通过MODI_Engine桥接的应用软件,例如说Pdg2Pic是在后台运行的,而前台应用软件,例如说WORD正在输入文字,这个时候如果OCR过程出错导致MODI_Engine崩溃退出,Pdg2Pic在后台自动重新启动MODI_Engine,则前台的WORD会因为焦点的切换而感觉闪烁,甚至时机赶得巧的话可能会出现输入的文字丢失。
    3. 用户必须自己手工把MODI_Engine及调用MODI_Engine的软件设置为以管理员权限运行,否则OCR会失败。
    4. 由于某些疏忽,V1版MODI_Engine在MODI的回调(callback)机制上出了点问题,导致用户不能中断OCR过程。

    所以,MODI_Engine从V1版升级至V2版,进行了如下改进:

    1. IPC通信从消息机制改成共享内存(shared memory),因此不再要求MODI_Engine必须有消息队列,框架也就从基于对话框的GUI改成控制台(console)命令方式。
    2. 由于没有消息队列,因此可以做到完全的静默启动,即后台自动重启MODI_Engine时,前台应用不会再出现闪烁的问题。
    3. 在FreePic2Pdf_Lib中,自动以管理员权限启动MODI_Engine,因此即使用户疏忽,忘记设置以管理员权限运行,也不会造成OCR失败。
    4. 改进了回调机制响应,用户可以及时中断OCR过程。

    对于V1版MODI_Engine,我用了40万页进行测试。V2版没那么夸张,但我也找了10万页,用不同的参数测试了3遍,以对参数进行优化。

    (完)

  • 相关阅读:
    【MySQL 5.7 Reference Manual】15.4.2 Change Buffer(变更缓冲)
    从MySQL slave system lock延迟说开去
    一文搞懂Raft算法
    Relinking Oracle Home FAQ ( Frequently Asked Questions) (Doc ID 1467060.1)
    Oracle 单实例 Relink Binary Options 说明
    oracle upgrade best pratics
    sysbench安装、使用、结果解读
    Linux 进程管理之四大名捕
    iOS 严重问题解释(crash)
    iOS 图片剪切和压缩的几个方法
  • 原文地址:https://www.cnblogs.com/stronghorse/p/14425373.html
Copyright © 2011-2022 走看看