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遍,以对参数进行优化。

    (完)

  • 相关阅读:
    警示
    【拒绝挂分】盘点蒟蒻ghy的各种sb错误
    牛客NOIPtg day5 B-demo的gcd
    数字校园APP——视频分享
    数字校园APP——软件需求规格说明书
    数字校园APP——可行性报告分析
    数字校园APP开发与应用
    结对编程第二次作业——四则运算自动生成器
    软件工程第四次作业
    软件工程第三次作业
  • 原文地址:https://www.cnblogs.com/stronghorse/p/14425373.html
Copyright © 2011-2022 走看看