vb.net文字识别的简单介绍

VB.NET如何获取任何格式文件的文字信息

Option Explicit

十余年的古冶网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整古冶建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“古冶网站设计”,“古冶网站推广”以来,每个客户项目都认真落实执行。

'mTextUTF.bas

'模块:UTF文本文件访问

'作者:zyl910

'版本:1.0

'日期:2006-1-23

'== 说明 ===================================================

'支持Unicode编码的文本文件读写。暂时支持ANSI、UTF-8、UTF-16LE、UTF-16BE这几种编码文本

'== 更新记录 ===============================================

'[V1.0] 2006-1-23

'1.支持最常见的ANSI、UTF-8、UTF-16LE、UTF-16BE这几种编码文本

'## 编译预处理常数 #########################################

'== 全局常数 ===============================================

'IncludeAPILib:引用了API库,此时不需要手动写API声明

'## API ####################################################

#If IncludeAPILib = 0 Then

'== File ===================================================

Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Long) As Long

Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Long) As Long

Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long

Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long

Private Const INVALID_HANDLE_VALUE = -1

Private Const GENERIC_READ = H80000000

Private Const GENERIC_WRITE = H40000000

Private Const FILE_SHARE_READ = H1

Private Const FILE_SHARE_WRITE = H2

Private Const Create_NEW = 1

Private Const Create_ALWAYS = 2

Private Const OPEN_EXISTING = 3

Private Const OPEN_ALWAYS = 4

Private Const TRUNCATE_EXISTING = 5

Private Const FILE_ATTRIBUTE_NORMAL = H80

Private Const FILE_BEGIN = 0

Private Const FILE_CURRENT = 1

Private Const FILE_END = 2

'== Unicode ================================================

Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByRef lpWideCharStr As Any, ByVal cchWideChar As Long) As Long

Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByRef lpWideCharStr As Any, ByVal cchWideChar As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByRef lpDefaultChar As Any, ByVal lpUsedDefaultChar As Long) As Long

Private Const CP_UTF8 As Long = 65001

#End If

'###########################################################

'Unicode编码格式

Public Enum UnicodeEncodeFormat

UEF_ANSI = 0 'ANSI+DBCS

UEF_UTF8 'UTF-8

UEF_UTF16LE 'UTF-16LE

UEF_UTF16BE 'UTF-16BE

UEF_UTF32LE 'UTF-32LE

UEF_UTF32BE 'UTF-32BE

UEF_Auto = -1 '自动识别编码

'隐藏项目

[_UEF_Min] = UEF_ANSI

[_UEF_Max] = UEF_UTF32BE

End Enum

'ANSI+DBCS方式的文本所使用的代码页。默认为0,表示使用系统当前代码页。可以利用该参数实现读取其他代码编码的文本,比如想在 简体中文平台下 读取 繁体中文平台生成的txt,就将它设为950

Public UEFCodePage As Long

'判断BOM

'返回值:BOM所占字节

'dwFirst:[in]文件最开始的4个字节

'fmt:[out]返回编码类型

Public Function UEFCheckBOM(ByVal dwFirst As Long, ByRef fmt As UnicodeEncodeFormat) As Long

If dwFirst = HFEFF Then

fmt = UEF_UTF32LE

UEFCheckBOM = 4

ElseIf dwFirst = HFFFE0000 Then

fmt = UEF_UTF32BE

UEFCheckBOM = 4

ElseIf (dwFirst And HFFFF) = HFEFF Then

fmt = UEF_UTF16LE

UEFCheckBOM = 2

ElseIf (dwFirst And HFFFF) = HFFFE Then

fmt = UEF_UTF16BE

UEFCheckBOM = 2

ElseIf (dwFirst And HFFFFFF) = HBFBBEF Then

fmt = UEF_UTF8

UEFCheckBOM = 3

Else

fmt = UEF_ANSI

UEFCheckBOM = 0

End If

End Function

'生成BOM

'返回值:BOM所占字节

'fmt:[in]编码类型

'dwFirst:[out]文件最开始的4个字节

Public Function UEFMakeBOM(ByVal fmt As UnicodeEncodeFormat, ByRef dwFirst As Long) As Long

Select Case fmt

Case UEF_UTF8

dwFirst = HBFBBEF

UEFMakeBOM = 3

Case UEF_UTF16LE

dwFirst = HFEFF

UEFMakeBOM = 2

Case UEF_UTF16BE

dwFirst = HFFFE

UEFMakeBOM = 2

Case UEF_UTF32LE

dwFirst = HFEFF

UEFMakeBOM = 4

Case UEF_UTF32BE

dwFirst = HFFFE0000

UEFMakeBOM = 4

Case Else

dwFirst = 0

UEFMakeBOM = 0

End Select

End Function

'判断文本文件的编码类型

'返回值:编码类型。文件无法打开时,返回UEF_Auto

'FileName:文件名

Public Function UEFCheckTextFileFormat(ByVal FileName As String) As UnicodeEncodeFormat

Dim hFile As Long

Dim dwFirst As Long

Dim nNumRead As Long

'打开文件

hFile = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, ByVal 0)

If INVALID_HANDLE_VALUE = hFile Then '文件无法打开

UEFCheckTextFileFormat = UEF_Auto

Exit Function

End If

'判断BOM

dwFirst = 0

Call ReadFile(hFile, dwFirst, 4, nNumRead, ByVal 0)

nNumRead = UEFCheckBOM(dwFirst, UEFCheckTextFileFormat)

'Debug.Print nNumRead

'关闭文件

Call CloseHandle(hFile)

End Function

'读取文本文件

'返回值:读取的文本。返回vbNullString表示文件无法打开

'FileName:[in]文件名

'fmt:[in,out]使用何种文本编码格式来读取文本。为UEF_Auto时表示自动判断,且在fmt参数返回文本所用编码格式

Public Function UEFLoadTextFile(ByVal FileName As String, Optional ByRef fmt As UnicodeEncodeFormat = UEF_Auto) As String

Dim hFile As Long

Dim nFileSize As Long

Dim nNumRead As Long

Dim dwFirst As Long

Dim CurFmt As UnicodeEncodeFormat

Dim cbBOM As Long

Dim cbTextData As Long

Dim CurCP As Long

Dim byBuf() As Byte

Dim cchStr As Long

Dim I As Long

Dim byTemp As Byte

'判断fmt范围

If fmt  UEF_Auto Then

If fmt  [_UEF_Min] Or fmt  [_UEF_Max] Then

GoTo FunEnd

End If

End If

'打开文件

hFile = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, ByVal 0)

If INVALID_HANDLE_VALUE = hFile Then '文件无法打开

GoTo FunEnd

End If

'判断文件大小

nFileSize = GetFileSize(hFile, nNumRead)

If nNumRead  0 Then '超过4GB

GoTo FreeHandle

End If

If nFileSize  0 Then '超过2GB

GoTo FreeHandle

End If

'判断BOM

dwFirst = 0

Call ReadFile(hFile, dwFirst, 4, nNumRead, ByVal 0)

cbBOM = UEFCheckBOM(dwFirst, CurFmt)

'恢复文件指针

If fmt = UEF_Auto Then '自动判断

fmt = CurFmt

'cbBOM = cbBOM

Else '手动设置编码

If fmt = CurFmt Then '若编码相同,则忽略BOM标记

'cbBOM = cbBOM

Else '编码不同,那么都是数据

cbBOM = 0

End If

End If

Call SetFilePointer(hFile, cbBOM, ByVal 0, FILE_BEGIN)

cbTextData = nFileSize - cbBOM

'读取数据

UEFLoadTextFile = ""

Select Case fmt

Case UEF_ANSI, UEF_UTF8

'判断应使用的CodePage

CurCP = IIf(fmt = UEF_UTF8, CP_UTF8, UEFCodePage)

VB.net如何提取textbox中部分内容?(需要提取的文本是固定位置的)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

TextBox2.Text = Mid(TextBox1.Text, 11, 2) ’第十一位开始算起的2个字符

End Sub

VB窗口截图并将图片上文字识别成文字。

为何要采用截图功能去取窗口的句柄呢,可以用窗口标题去取句柄呀。

vb.net怎么做中文语音识别程序

首先添加一个系统的语音COM组件的引用microsoft speech object library然后在程序中声明一个语音类dim RC As SpeechLib.SpSharedRecoContext这个类有一些事件,如果你要处理它的一些事件,可以用withevent来声明然后在窗体LOAD事件或你需要的地方先创建一个实例RC = New SpeechLib.SpSharedRecoContext当一个RC被实例化后,系统就会运行语音识别程序.前提是你的系统已经正确安装这个功能.一般默认就已经安装好的.其次提醒一下,WIN7的语音识别比XP的好N倍.从阅读到侦听都好很多.然后就可以在你需要阅读的地方使用RC.Voice.Speak("hello 我", 11)11那里是一些枚举,用来标识系统用前台还是后台或其他方式来阅读文字,简单的来说就是阅读的时候不会卡住你的程序.你可以选其他的枚举来试试作用.以上为阅读部分.如果需要程序听你说话,则需要声明一个侦听类dim RG As SpeechLib.ISpeechRecoGrammar在初始化时将之与上面的RC建立关系,此时则必须要用withevent来声明上面的RC,因为涉及电脑听到你的语音后,会触发一个事件,并将听到的内容传递到该事件.其次,要让系统听到的解析为命令,就必须准备一个XML结构的文件来保存那些固定的命令.如果电脑在XML文件中找不到那些固定命令或同时不属于系统命令,电脑将会将其解释为听写.RG = RC.CreateGrammar '(0)

RG.CmdLoadFromFile("听到.xml", SpeechLib.SpeechLoadOption.SLODynamic)

RG.CmdSetRuleIdState(0, SpeechLib.SpeechRuleState.SGDSActive)然后写一个过程来处理听到的事件Private Sub 听到命令(ByVal StreamNumber As Integer, ByVal StreamPosition As Object, ByVal RecognitionType As SpeechLib.SpeechRecognitionType, ByVal 话语 As SpeechLib.ISpeechRecoResult) Handles RC.Recognition RC.Voice.Speak("我听到了" 话语.PhraseInfo.GetText, 11)End Sub以上为侦听部分.下面列一个XML的例文?xml version="1.0" encoding="gb2312"?

GRAMMAR LANGID="804"

RULE NAME="命令" TOPLEVEL="ACTIVE"

L

P打开播放器

P上我的QQ

P关闭你自己 /L

/RULE

/GRAMMAR要让系统正确地侦听到你说的话,前提你必须运行语音识别程序并让其激活到"正在聆听"状态.并且你必须有一个能正常使用的话筒而且保证话筒已经打开.(废话-_-|||)以上就是用VB.NET语音识别的最基本的一些操作.希望对你有帮助.更深入的内容有兴趣的话可以和我一起研究.

vb.net怎样定义定长字符串?急!!!!!

摘自帮助文档,我也不是很理解

估计只有在Visual Basic 文件输入和输出才有用

示例

Visual Basic 复制代码

Structure Person

Public ID As Integer

Public MonthlySalary As Decimal

Public LastReviewDate As Long

VBFixedString(15) Public FirstName As String

VBFixedString(15) Public LastName As String

VBFixedString(15) Public Title As String

VBFixedString(150) Public ReviewComments As String

End Structure

注意

VBFixedStringAttribute 是信息性的属性,不能用于将可变长度字符串转换为固定长度字符串。此属性的作用是修改那些识别 VBFixedStringAttribute 的方法或 API 调用(如 Len 和 FilePut 函数)使用结构中的字符串以及非局部变量的方式。请记住,此属性不会更改字符串本身的实际长度。

备注

默认情况下,Visual Basic 字符串为可变长度的字符串。在使用 Visual Basic 文件输入和输出函数(如需要固定长度字符串的 FileGet 和 FilePut)时,该属性非常有用。

注意

VBFixedStringAttribute 属性以字节而不是字符为单位指定字符串长度。


本文名称:vb.net文字识别的简单介绍
分享URL:http://scyanting.com/article/doopjeh.html