上一次我们讨论了Tesseract OCR引擎的用法,作为一款老牌的OCR引擎,目前已经开源,最新版本3.0中更是加入了中文OCR功能,再加上Google的更新、维护,可以说是潜力很大,值得期待。由上一次的测试结果也可以看出,Tesseract的OCR结果还不是很理想,尤其是中英文混合的文字,其识别率有限。本次我们来关注下Office 2010中的Onenote,调用其API来测试OCR功能。
PS:在公司经理一直推荐使用MyBase来记录工作中遇到的问题、工作日志等,但是我一直坚持使用Onenote :)
在Visual Studio 2010 Ultimate + Onenote 2010 x64中测试通过
转载请注明出处:http://www.cnblogs.com/brooks-dotnet/archive/2010/10/07/1845313.html
1、Onenote 2010 新特性:
New features in 2010:
Gather, organize, and search |
Sharing and universal access |
|
|
Examples:
|
Organize topics using subpages Drag tabs to indent and organize pages within a section. |
||||
Keep notes visible during other tasks OneNote will link notes to documents and Web pages you view.
|
|||||
|
What's new in a shared notebook? Unread changes are shown automatically. |
||||
|
What notes are teammates working on?
|
||||
Select location when sending to OneNote When sending from Outlook or Internet Explorer |
|||||
Link to information for yourself and others
|
More Resources Online
Videos, templates, training, help, and discussion groups.
Microsoft® OneNote® 2010 Guide Notebook
Copyright © 2009 Microsoft Corporation. All rights reserved.
The example companies, organizations, products, domain names, e-mail addresses, logos, people, places, and events depicted herein are fictitious. No association with any real company, organization, product, domain name, email address, logo, person, places, or events is intended or should be inferred.
2、Onenote中的OCR功能
园子里的朋友斯克迪亚很早就写过一片博文,详细介绍了GUI下使用OCR功能的方法,当时我也看了,想用编程来实现Onenote的OCR功能。后来忙其他事就没有细究,国庆假期我正好在查找一些OCR工具,又想起了这回事,于是多方查找资料、测试,今天终于是略有小成,特与大家分享。程序还存在很多问题,欢迎拍砖。
2.1、关于Onenote OCR功能的一处细节要先提一下,那就是如果从网络上复制一幅图片到Onenote中,是无法进行OCR的;但是如果从本地插入一幅图片到Onenote中,则可以进行OCR:
左边是本地图片,右边是网络图片,可以看出,网络图片右键菜单中的【Copy Text from Picture】是灰掉的,无法点击。
2.2、我用WPF写的小程序界面如下,和上一次TesseractGUI如出一辙,不过是换药未换汤。
左边选择图片,支持本地图片、网络图片预览、缩放、移动,右边选择输出目录、显示OCR结果:
2.3、MSDN杂志上有一篇文章给了我很大的启发,介绍了Onenote 2010中的对象模型,感兴趣的朋友可以深入阅读。CodePlex上还有一个托管的Onenote对象模型项目ONOM,对Onenote PIA提供了更好的封装。建立WPF项目并添加引用时要注意一下:
首先,由于与 Visual Studio 2010 随附的 OneNote 互操作程序集不匹配,您不应该在"添加引用"对话框的".NET"选项卡上直接引用 Microsoft.Office.Interop.OneNote 组件,而是应该在"COM"选项卡上引用 Microsoft OneNote 14.0 类型库组件。这样做仍会向项目的引用中加入 OneNote 互操作程序集。
其次,OneNote 14.0 类型库与 Visual Studio 2010"NOPIA"功能不兼容。在 NOPIA 功能中,主互操作程序集默认情况下不会嵌入到应用程序中。因此,请务必将 OneNote 互操作程序集引用的"嵌入互操作类型"属性设置为 False。
2.4、Onenote没有采用OpenXML格式进行描述,而是使用了原始的XML ,一个完整的页面的描述代码如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
< one:Page xmlns:one ="http://schemas.microsoft.com/office/onenote/2010/onenote" ID ="{6506BE8D-72F1-461D-AB41-632D60CCD6D3}{1}{B0}" name ="Untitled page" dateTime ="2010-10-06T02:33:02.000Z" lastModifiedTime ="2010-10-06T05:26:59.000Z" pageLevel ="1" isCurrentlyViewed ="true" >
< one:QuickStyleDef index ="0" name ="PageTitle" fontColor ="automatic" highlightColor ="automatic" font ="Calibri" fontSize ="17.0" spaceBefore ="0.0" spaceAfter ="0.0" />
< one:PageSettings RTL ="false" color ="automatic" >
< one:PageSize >
< one:Automatic />
</ one:PageSize >
< one:RuleLines visible ="false" />
</ one:PageSettings >
< one:Title lang ="zh-CN" >
< one:OE author ="Brooks" authorInitials ="WS" lastModifiedBy ="Brooks" lastModifiedByInitials ="WS" creationTime ="2010-10-06T02:33:02.000Z" lastModifiedTime ="2010-10-06T02:33:02.000Z" objectID ="{E13C4904-E707-4980-83FD-C92F117109E1}{15}{B0}" alignment ="left" quickStyleIndex ="0" >
< one:T > <![CDATA[]]> </ one:T >
</ one:OE >
</ one:Title >
< one:Image format ="jpg" originalPageNumber ="0" lastModifiedTime ="2010-10-06T05:26:59.000Z" objectID ="{9C53EE63-B289-40A1-9CA9-2E45F2F833B0}{138}{B0}" >
< one:Position x ="18.0" y ="104.400001525879" z ="0" />
< one:Size width ="420.75" height ="113.9999923706055" />
< one:Data >
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsK
CwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQU
FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCACYAjEDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9MvH3
j7Qfhf4Sv/E3ia//ALM0OxCG4uvJkl2bnVF+SNWY5ZlHAPWszwL8YfCfxH1PUdM0PUZ21XTkjkut
O1CwuLC6iRxlH8m4jRyhBGGAI5HNcD+2z4d1XxX+zH4z0rRNMvNY1S4W18mysLd55pMXULHaiAsc
AEnA6A15j8V/2c/Gn/CG+LPGSazP4j8XatZabYXWm6JYtp6jSIXRri1jiMsjySOocsDJlxlFXnaV
B3b5trpfet/v38r/ADclorbu/wCFv83bzsfYFc94j8f6B4S1zw9o+rX/ANk1HxBcPa6bD5Mj+fKq
b2XcqkLhRnLECvjXxf8AC8+JtU+IFv4W0vxP8PvhbqiaXCkGneELpo5r+Ni8sh0rZHK0BjVI5GCA
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