以API方式调用C# dll,使用OneNote2013 sp1实现OCR识别本地图片
http://www.cnblogs.com/Charltsing/p/OneNoteOCRAPI.html
OneNote2013 OCR API调用使用说明
2019.4.17
使用说明:
1、安装干净的Office 2013,再安装Office 2013 sp1。不要安装其它OneNote更新(特别是KB3115256)。
2、在OneNote历史记录里面的笔记本回收站,选中禁用此笔记本的历史记录,如果有多个笔记本,最好都禁用。
3、确认OneNote里面至少有一个笔记本(notebook)和一个分区(section)。这个应该OneNote默认提供的。然后新建一个页面检查插入图片之后,是否可以从图片中获得文本,能获取说明OneNote OCR功能正常。
4、打开OneNoteAPI.xlsm,运行VBA代码TestOcrB或者TestOCR,观察立即窗口输出是否正确。
5、API函数第一次运行耗时会略长(因为要启动OneNote),之后识别速度会正常。
6、在I7 CPU测试识别速度:小图片大约几十毫秒,大图片可能会上千毫秒。
7、需要简体OneNote2013 Sp1,其它版本不支持(由于OneNote对象库不能嵌入,需要重新编译才能支持其他版本)。
运行环境说明:
1、只支持简体中文版的OneNote2013,并具备至少一个Notebook(笔记本)和一个Section(分区),API运行时会在某个分区上面创建page,插入图片识别后删除。
2、禁用笔记本历史记录,(因为每次OCR都要创建一个page,禁用回收站可以避免文档加载变慢或出现其它错误。)
3、由于OneNote的原因,多次运行可能会在某个分区残留多个名为"无标题页"的page,可以调用API命令清除。
4、如果安装了多个版本的Office(不建议这么做),应保证office2013 sp1为最后安装版本。
5、程序需要.net 4.0环境https://www.microsoft.com/zh-CN/download/details.aspx?id=17718
6、目前只支持简体中文版,其它语言版本需要修改代码。
可能的错误:
1、提示缓冲区溢出。请增加Buffersize。
2、返回的识别文本长度为0。请增加延时。(程序第一次运行耗时会略长,之后会正常。)
3、Excel突然闪退。这与OneNote有关,请增加延时。如果无效请卸载Office2013,重新安装干净的版本及SP1,不要使用精简版的Office 2013。
4、小图片始终无法识别。请在OneNote里面检查是否识别功能处于禁用状态,如果无法选择中文,请重新安装或者修复Office2013或者卸载更新。2016年7月25日OneNote的一个更新可能会造成这个问题(KB3115256)。
5、任何时候,如果发现OCR识别错误,请先检查OneNote插入此图片之后获取文本功能是否正常。
如何卸载Windows更新
Windows 10:在更新历史记录里面,点击卸载更新,选择KB3115256
****************************************
4月21日测试:
OneNote2013 SP1没有问题(如果想识别小图片,请不要安装KB3115256)。
OneNote2016 简体中文版可以使用(16.0.4266.1001),但是无法识别小图片。
Office365和Office2019已经不再提供OneNote2016的功能,取代的是OneNote for Windows10
****************************************

下载 无需安装部署,直接运行。
**********
联系QQ:564955427
QQ群:550672198(验证信息:Onenote OCR)
以API方式调用C# dll,使用OneNote2013 sp1实现OCR识别本地图片的更多相关文章
- VBA通过C#以API方式调用JS脚本函数
http://www.cnblogs.com/Charltsing/p/JSDotNetAPI.html 在网页采集中,很多时候需要运行网站下载的某个js文件中的函数,以计算Request参数.VBA ...
- Java API方式调用Kafka各种协议
众所周知,Kafka自己实现了一套二进制协议(binary protocol)用于各种功能的实现,比如发送消息,获取消息,提交位移以及创建topic等.具体协议规范参见:Kafka协议 这套协议的具 ...
- 用PHP调用证件识别接口识别本地图片
前置条件 在开始前,请作如下准备:1.学会用PHP输出“Hello World” 2.去聚合数据申请证件识别专用的KEY:https://www.juhe.cn/docs/api/id/153 操作步 ...
- 用HTTP方式调用gearman任务处理
本来以为是个挺美好的东西,结果... 这样的方式非常不安全,尤其是假设暴露在公网地址,非常easy被攻击,并且gearman的http服务远没有专业的webserver健壮. 攻击方式非常easy:t ...
- Windows API方式直接调用C#的DLL,支持多音字转拼音、Gzip解压缩、公式计算(VBA、C++、VB、Delphi甚至java都可以)
原始链接 https://www.cnblogs.com/Charltsing/p/DllExport.html 这两年,我在VBA应用方面一直有几大痛点:1.多音字转拼音:2.64位下的GZIP解压 ...
- C#调用C++ DLL动态库的两种方式
第一种方式:C++导出函数, c#dllimport 的方式 在很多地方都看到过,如[dllimport "user32.dll"]这种代码,调用windows API,就是通过这 ...
- AutoCAD.NET 不使用P/Invoke方式调用acad.exe或accore.dll中的接口(如acedCommand、acedPostCommand等)
使用C#进行AutoCAD二次开发,有时候由于C#接口不够完善,或者低版本AutoCAD中的接口缺少,有些工作不能直接通过C#接口来实现,所以需要通过P/Invoke的方式调用AutoCAD的其他DL ...
- Native Application 开发详解(直接在程序中调用 ntdll.dll 中的 Native API,有内存小、速度快、安全、API丰富等8大优点)
文章目录: 1. 引子: 2. Native Application Demo 展示: 3. Native Application 简介: 4. Native Ap ...
- C# 调用C++ dll 返回char*调用方式(StringBuilder乱码)
// CDLLDemo.cpp : 定义 DLL 应用程序的导出函数. // #include "stdafx.h" #include "string.h" # ...
随机推荐
- [Swift]LeetCode1034.边框着色 | Coloring A Border
Given a 2-dimensional grid of integers, each value in the grid represents the color of the grid squa ...
- python实现列表的排序
群里有同行遇到这样一个面试题:有一个整数构成的列表,需要给这个列表进行从小到大存入到另一个列表中. 本身排序可以用python的内置函数sort和sorted,但题目的要求是手动实现. 看起来很简单, ...
- 从一道面试题探究 Integer 的实现
记得有次面试,面试官问我: 如何写一个方法交换两个 Integer 类型的值? 当时心里一惊,这是把我当小白了呀!交换两个数的值还不容易么,最简单的直接搞一个中间变量,然后就可以交换了… … 面试官随 ...
- 文本分布式表示(三):用gensim训练word2vec词向量
今天参考网上的博客,用gensim训练了word2vec词向量.训练的语料是著名科幻小说<三体>,这部小说我一直没有看,所以这次拿来折腾一下. <三体>这本小说里有不少人名和一 ...
- .NET Core微服务之服务间的调用方式(REST and RPC)
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.REST or RPC ? 1.1 REST & RPC 微服务之间的接口调用通常包含两个部分,序列化和通信协议.常见的序列化 ...
- JSP 内置对象(上)
JSP 内置对象是 Web 容器创建的一组对象,不使用 new 关键字就可以直接使用的对象.如上一章中使用脚本实现打印九九乘法表中的out对象 <%-- 脚本:out对象是JSPWriter类的 ...
- 100 - k8s源码分析-准备工作
今天我们开始讲kubernetes的源码! 之前的其他开源项目还没有说完,后续会陆陆续续更新,我们把主线先放到k8s的源码上. 之前我想详细讲解每一行k8s源码,但是越看越发现一个大型开源项目如果拘泥 ...
- DSAPI 简单WebAPI实现
使用DSAPI实现一个简单的WebAPI功能,以便各客户端访问.支持身份验证,支持基础防护. 新建项目(以下演示控制台示例),引用DSAPI.dll. 复制粘贴以下代码: Module Module1 ...
- FeignClient注解及参数
一.FeignClient注解 FeignClient注解被@Target(ElementType.TYPE)修饰,表示FeignClient注解的作用目标在接口上 1 2 3 4 5 @FeignC ...
- MySQL 笔记整理(16) --“order by”是怎么工作的?
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 16) --“order by”是怎么工作的? 在林老师的课程中,第15 ...