Member Login
 สมัครสมาชิกที่นี่
 เข้าระบบ:
ลืมรหัสผ่าน?
สถิติสมาชิก:
Total:13,769
Latest:zanowork 
Onlines:
 
บุคคลทั่วไป:84 

News/บทความ(VB) - อ่านตัวอักษร(text)จากรูป(image)ด้วย ocr.dll

News/บทความ(VB)

ไม่ได้โพสต์โปรแกรมมิ่งซะนานเลยครับ วันนี้จะเขียนโปรแกรมอ่าน text หรือ barcode จากไฟล์รูปภาพออกมาในรูปของตัวอักษร(text) ดัวย ocr.dll  ก่อนอื่นขอเกริ่นซักหน่อยว่าเทคนิคของการเขียนโปรแกรมแบบเพียว ๆ ที่ดึงตัวอักษรจากรูปภาพมาเป็น text เรียกว่าเทคนิค OCR - Optical character recognition ดูความหมายและประวัติของโอซีอาร์ในสารานุกรมวิกิพีเดีย  หลักการคร่าว ๆ ตามความหมายของโปรแกรมมิ่งนะครับ
1. นำภาพตัวอักษรมาแบ่งสเกลเล็ก ๆ(รูปขาวดำดีที่สุด)



2. ตั้งค่า format มาตรฐานของตัวอักษรแต่ละตัว



3. นำรูปตัวอักษรที่ต้องการมาหาจุดสีตามสเกล
4. นำ format ที่ได้มาเปรียบเทียบกัน ถ้าเข้ารูป format ไหนก็ถือว่าเป็นอักษรตัวนั้น ๆ
   
     การเขียนโปรแกรมก็ไม่ง่ายซะทีเดียว ดังนั้นใช้ทางลัดดีที่สุด555
          ActiveX  ที่ผมเอามาในเล่นเป็น shareware ที่ถูกปลดล็อค(crack)แล้วใช้ได้ไม่จำกัด แต่จุดประสงค์ผมคือให้นำไปศึกษาครับ มะควรเอาไปใช้ในงานส่วนตัว

เริ่มเขียนโปรแกรม
1. ให้ดาวน์โหลด dll ไฟล์ 3 ตัวไปวางในโฟลเดอร์เดียวกับโปรเจค ที่นี่ 
2. สร้างฟอร์มดังรูป

2. เขียนโค๊ด

Option Explicit

Private Declare Function OCR Lib "OCR.dll" (ByVal file As String, ByVal imageType As Long) As String
Private Declare Function OCRBarCodes Lib "OCR.dll" (ByVal file As String, ByVal imageType As Long) As String
Private Declare Function OCRpart Lib "OCR.dll" (ByVal file As String, ByVal imageType As Long, ByVal startX As Long, ByVal startY As Long, ByVal width As Long, ByVal height As Long) As String

Private Sub Command1_Click()
Dim sText As String
Dim sFile As String
    sFile = App.Path & "img est8.png"
    sText = OCR(sFile, -1)   'OCR(ImagePath , imageFileType)
    txtdisplay.Text = sText
End Sub

3. ในที่นี้ผมโหลดรูป test8.png จากโฟล์เดอร์ img



รูปนี้ครับ

4. จากนั้นก็รันโปรเจค

ก็จะได้ตัวอักษรที่มาจากรูปภาพจากนั้นก็ตรวจสอบว่าถูกต้องทั้งหมดหรือไม่

5. ทีนี้ผมลองใช้รูปบาร์โค๊ดครับ (คอนโทรลตัวนี้มีฟังก์ชันอยู่แล้ว)

6. รันโปรเจค

ลองดัดแปลงเป็น application เช่นการอ่านหมายเลขจากการ์ดหรืออ่านบาร์โค๊ดแบบอื่น ๆ

บทความโดย:แมงเม่า