扫描仪可以把文字扫描成文本文件,是否有一种。。。。。。。。。。。。

iwzw 2002-02-16 11:13:04
扫描仪可以把文字扫描成文本文件,是否有一种软件(当然,用VB做一个更好)可以把屏幕上的文字“扫描”成文本文件?
...全文
844 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
iwzw 2002-07-05
  • 打赏
  • 举报
回复
Anyone who can provide the an ocr control which can be used in vb will get the score 100.
fuxc 2002-02-18
  • 打赏
  • 举报
回复
就是OCR软件,清华紫光的不错。
Chice_wxg 2002-02-18
  • 打赏
  • 举报
回复
马飞涛 的 屏幕抓字技术揭密 根本没法看。太乱了,跟没说一样。

其实用不着这么麻烦,只要挂个Hook,然后改掉其他进程的ImportTable就可以了。

不过你别问我VB的实现办法,我认为实现不了。
Chice_wxg 2002-02-18
  • 打赏
  • 举报
回复

《电脑编程技巧与维护》上有篇文章,讲了类似的问题。

其实方法都一样,只能替换API后自己处理。


iwzw 2002-02-18
  • 打赏
  • 举报
回复
还有高手吗?
skydg 2002-02-17
  • 打赏
  • 举报
回复
这么高级的东西我不会:)
john_christopher 2002-02-17
  • 打赏
  • 举报
回复
屏幕抓字技术揭密
转贴 出处: http://www.chinaasp.com/columns/visual/article1720.asp
屏幕抓字技术揭密
----------深入WINDOWS内部探险手记

郑州 马飞涛

一 公开它!
四通利方和金山词霸的用户都曾见识过屏幕抓字技术,鼠标指哪就翻译哪个单
词,这个技术看似简单,其实在WINDOWS系统中实现却是非常复杂和有趣的。 经
过半年多的艰辛探索,笔者终于破解了其中的秘密,并在今天决定公开它,这个
人人 都曾见过但是却鲜有人知的秘密,这个只被几家软件公司垄断从未在公开的报刊 资 料披露过只言片语的秘密!
回想这半年多的探索,其中浸润了多少笔者的苦闷与欢乐,绝望与兴奋,挫 折
与收获,现在都终于有了结果:将屏幕抓字技术的秘密公开,献给孜孜不倦辛勤
工 作的程序员们。如果这样做能为国产软件事业的发展效微薄之力,对笔者来说,也 是一桩快事!

二 初识屏幕抓字

最初知道屏幕抓字, 是在购买了〖英汉通〗软件之后。 当时笔者还只是一 个
VISUAL BASIC 的初学者, 对 WINDOWS 系统内部的知识了解并不多, 认为 在
WINDOWS系统中屏幕抓字的实现应该和DOS系统中的一样,调用一个DOS 中断取屏
幕 上的字符或直接读显示内存的内容就可以了。

三 看似很简单,其实不然

随着对WINDOWS系统的认识不断深入,才发现问题并不象想得那么简单。首先,
翻阅了WINODWS应用程序接口(API)中的上千个函数,并没有发现有一个现成的
类 似于getWordFromPoint()的函数;根据使用经验,经过判断发现屏幕抓字采用的 也 不是图像识别技术;翻阅了SDK的联机文档中没有,DDK的联机文档中也没有;显示 卡编程接口的资料则很难获得,有的也只是CGA到VGA显存的基本知识。回想当时 坐 在机子前,面对一屏屏的联机资料(如果是纸,将堆积如山),感觉就是在黑暗 中 的大海里航行,没有方向,没有灯光,但强烈的兴趣紧抓着我,一定要把这个谜 解 开。

四 选择合适的编程工具

突然又有了一些新的想法:
可否试着截获WINDOWS中关于字符的消息呢?
DC(设备描述表)到底是什么?
WINDOWS的TextOut函数是否将TEXT放在DC的某个单元中?
显然,用VISUAL BASIC就力不从心了。在DOS中用TURBO C编程笔者还算熟练


因此先尝试用VISUAL C++,但是奇慢的编译速度使人难以忍受, 高度抽象的类
让 人一头雾水,开发商务软件可能还行,但开发这样一个深入WINDOWS 内部的系统 件,望着一堆缠绕不清的类和消息,真有点牛刀宰鸡、刺刀耕田的感觉。
最后选择了DELPHI,第一印象是编译速度真快,在我的祖父型386 机子上 编
译一个WINDOWS程序,速度和用TURBO C的速度感觉差不多,真让人兴奋得爱不释手。 随着不断使用,发觉DELPHI真是一个好的快速开发工具,(快速并不意味着简单 粗 糙,而是和WINDOWS系统有混然一体良好接口的表现)让初学者也很容易上手。 调 用各种WINDOWS 函数(包括很多未公开的函数)都非常直接迅速,用它来作开发 工 具,大有刺刀见红、一剑封喉的痛快感觉。

五 山穷水尽疑无路

随着对WINDOWS系统了解的深入,我逐渐明白了在向屏幕输出文字时,WINDO
WS 系统仅仅只是对某个应用程序发送WM_PAINT消息,告诉该应用程序窗口用户区已 经
“无效”而需要重画。具体的“绘制”工作(选择字体,颜色,文字)由应用程
序 完成。 应用程序在处理WM_PAINT消息时,调用BeginPaint和EndPaint来获得和释放 设 备描述表,调用DrawText、ExtTextOut、 TextOut等函数在设备描述表中“绘制 ” 文字。 应用程序“绘制”文字, 就象学生(应用程序)奉命(获得 WM_PAINT消息 ) 用老师(WINDOWS)提供的画笔(DrawText ExtTextOut TextOut等) 在黑板上画 画 一样,虽然大家能看到画的是什么字,但是画笔作为绘图工具并不知道画的是什 么。

老师(WINDOWS)不知道学生(应用程序)到底用什么字体,颜色,画哪些文字。

   总之 ,WINDOWS并不知道应用程序“绘制”的是什么。“文字”对 WINDO
WS

来说只是画笔留在黑板(屏幕)上的粉笔印,只是绘画的痕迹。“文字”只存在


应用程序的模块中,对WINDOWS系统是“不可见”的。
到处走投无路,真想掂5000块钱,跑到“英汉通”公司买回这个秘密。仔细


想,钱太少,就是多掂10倍,人家也不一定说。

六 柳暗花明又一村

经过再三考虑,我联想到在DOS系统中编程,会采取改变中断向量地址, 设


新的中断向量的技术:如果系统调用这个中断,就会先进入新的中断服务程序,


后再调用原来的中断服务程序。
那末,在WINDOWS系统中也采取这种技术,使系统如果调用某个函数, 先进


一个跟踪函数,取得原函数的参数,再调用原来的函数。听起来是否象病毒传染


发作?其实很多程序都采用过类似技术。大学毕业设计声卡时我就用过。
至此, 我认识到应该放弃常规的思路, 采取一些技巧, 截获 TextOut


ExtTextOut等函数,使之转向我的跟踪函数,在此查看应用程序(学生)的堆栈


传递给画笔(TextOut、ExtTextOut等函数)的参数, 从而获得应用程序要在屏


上写的“文字”。

七 “ 屏幕抓字”的实现

1 用SetWindowsHookEx()安装鼠标钩子MouseProc;
2 在屏幕上移动鼠标时,系统就会调用鼠标钩子MouseProc;
3 进入MouseProc,获得鼠标的坐标(x,y),
设置对TextOut()、ExtTextOut()等的跟踪程序,
用invalidateRect()告诉系统该点(x,y)“失效”;

系统发出WM_PAINT消息,指示该点(x,y)处的应用程序重绘“失效”的区域。
5 负责绘制该点()的应用程序在受到 WM_PAINT 消息后, 就有机会调用

TextOut()、 ExtTextOut()等函数。
6 调用的函数被拦截进入跟踪程序:设置好了的跟踪程序截获了该次调用,


应用程序的堆栈中取出 该点(x,y)“文字”的指针;
7 从应用程序的数据段中将“文字”指针的内容取出,即完成了一次“屏幕


字”;
8 退出跟踪程序,返回到鼠标钩子MouseProc;
9 在MouseProc中解除对TextOut() ExtTextOut()的跟踪;
10 退出MouseProc鼠标钩子程序,控制权交给系统。
11 在屏幕上移动鼠标,开始下一次“屏幕抓字”,返回步骤2。

八 前景展望
掌握了“屏幕抓字”的技术秘密,稍加改变,我们就可对WINDOWS 系统中


任意一个函数调用进行动态地拦截、跟踪、修改和恢复,就可让WINDOWS 系统中


任意一个函数按我们的设想工作,就可构造自己的外挂汉字平台,设计改变字体


放大镜、改变颜色的变色镜,保护视力的软件视保屏等等。

九 后记

希望此文能抛砖引玉,为大家编程时能找到捷径,开拓出新的思路;
对拦截、跟踪感兴趣的朋友也请来信交流切磋,如需DLL 或“抓字”的源
代 码,敬请
与 mafeitao@371.net 联系;




fishzone 2002-02-17
  • 打赏
  • 举报
回复
软件见得就多了,像清华紫光送的那些软件都可以
如果你想自己做一个。也有这样的控见,你可以去联系那些扫描仪的提供商
我知道有一个ocx: www.leadtools.com
那里有可以ocr的控件,但是不支持中文,而且还要钱,未注册版本只有两个月的试用期。
cdl371 2002-02-16
  • 打赏
  • 举报
回复
有这样的软件:比如:尚书5号
awinder 2002-02-16
  • 打赏
  • 举报
回复
同一楼上,应该行,不过我用的ocr软件识别率都不是很高。
lifanxi 2002-02-16
  • 打赏
  • 举报
回复
开个玩笑,我没试过:
把屏幕进行一次抓图,然后用OCR软件识别一下。
Readiris Corporate v12.0.5702 企业版为一套光学识别OCR软件,可以把纸张、PDF文件、图片文件扫描可以编辑的文字,然后用你喜欢的编辑器进行编辑!现在可以识别中文文字的图片,纸张,PDF等等文档啦,方便文字办公人员的文字输入编辑了!解压,安装,已支持所有语言文字的转换,本软件为集PJ,直接安装即可,以方便你使用。本软件为中文,荷兰语,英文,德文,西班牙文等多种主流语言。并并可识别共128种文字语言!一套光学识别OCR软件,可以把纸张、PDF文件、图片文件扫描可以编辑的文字,然后用你喜欢的编辑器进行编辑。 Readiris字元辨认系统是一款处理文字识别的OCR工具软件,其强大的识别能力和丰富的字库可使识别率达到98%以上。具有多稿处理功能,将多篇文件扫描后一并识别,存储为Word文档格式保留原稿版面,方便二次处理。具有自动分析、自动识别功能,操作更为简单快捷。内建的过滤系统可将文稿上的文字、图片、表格自动分类识别。 新特性: - 比旧版提高30%OCR的准确性 - 比以往快200倍的扫描速度 - 智能和直观的界面 - 更灵巧的PDF制作 - 更多的兼容性 - 对手写字体识别 - 条形码的识别 - 兼容JPG2000 使用方法:先将所有可扫描的文档,纸张、PDF文件、图片文件扫描,再使用软件就可以保存为TXT以及WORD等可编辑格式! 现在你可以做到把任何文件转换可编辑的文本文件! Readiris 12 可以把你的文件迅速转换可编辑的文本文件或PDF格式的文件,而且可以编辑,共享和存储! PS:“安装Readiris Pro 11 Corporate asia add on” 因为解密的版本中没有包含简体中文字库,请下载此文件后,将全部文件复制到“\Program Files\Readiris Corporate 12”目录下就可以了。此包中包含了简体/繁体中文、韩文、日文等亚洲字体的OCR识别。如果不安装这个补丁包,此软件将无法识别这4种文字

741

社区成员

发帖
与我相关
我的任务
社区描述
VB 版八卦、闲侃,联络感情地盘,禁广告帖、作业帖
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧