OCR ภาษาไทยสำหรับเอกสารยืนยันตัวตนและแบบฟอร์ม
อ่านภาพถ่ายเอกสารยืนยันตัวตนและแบบฟอร์มที่กรอกแล้วให้เป็นข้อความ ขั้นตอนสมัครจึงไม่ต้องให้ผู้สมัครพิมพ์สิ่งที่ส่งมาแล้วซ้ำอีก
ผลลัพธ์ที่ได้กลับมา
heading แบบคำขอเปิดบัญชี
paragraph ชื่อ-นามสกุล นายสมชาย ใจดี
paragraph วันเกิด ๑๒ มีนาคม ๒๕๓๘
paragraph ที่อยู่ตามทะเบียนบ้าน ๔๕/๗ ถนนสุขุมวิท
list 3 items
figure signatureชื่อ นายสมชาย
ชื่อสกุล ใจดี
เกิดวันที่ ๑๒ มี.ค. ๒๕๓๘
ที่อยู่ ๔๕/๗ ถนนสุขุมวิท แขวงคลองเตย
เขตคลองเตย กรุงเทพมหานคร# หนังสือรับรองการทำงาน
บริษัทขอรับรองว่า นายสมชาย ใจดี เป็นพนักงาน
ตำแหน่ง วิศวกรอาวุโส ตั้งแต่วันที่ ๑ เมษายน ๒๕๖๕
ผลการอ่านด้านบนเป็นตัวอย่างของรูปแบบผลลัพธ์ ไม่ใช่คำตอบที่บันทึกมาจริง หน้า OCR มีผลการอ่านตัวอย่างจริงของโมเดลพร้อมวันที่บันทึกกำกับไว้
วิธีต่อเข้ากับขั้นตอนรับสมัคร
การสมัครใช้บริการในประเทศไทยมักจบลงที่การถ่ายรูป ผู้สมัครยกเอกสารขึ้นถ่ายด้วยกล้องมือถือ กรอกแบบฟอร์ม แล้วถ่ายแบบฟอร์มนั้นอีกที จากนั้นเจ้าหน้าที่อีกฝั่งก็อ่านทั้งสองอย่างและพิมพ์เข้าระบบ ส่วนที่เป็นการอ่านคือส่วนที่โมเดลทำแทนได้ ส่วนที่เหลือหลังจากนั้น ทั้งหน้าที่ของคุณตามพระราชบัญญัติคุ้มครองข้อมูลส่วนบุคคล และการตัดสินว่าจะอนุมัติผู้สมัครหรือไม่ ยังเป็นของคุณ
ที่มา:PDPA (B.E. 2562)(opens in a new tab)
- ถ่ายรูปแบบที่คุณทำอยู่แล้วส่งรูปเป็น base64 ไฟล์ PNG JPEG และ WebP นับเป็นหนึ่งหน้าต่อไฟล์ ส่วน PDF หลายหน้าจะอ่านทีละหน้าได้ถึง 50 หน้า
- กรอกให้ล่วงหน้า แล้วให้คนยืนยันใช้ผลการอ่านเติมช่องที่ผู้สมัครต้องพิมพ์เอง แล้วแสดงผลให้เขาตรวจ คนที่ยืนยันแบบฟอร์มที่กรอกไว้แล้วทำได้เร็วกว่าและผิดพลาดน้อยกว่าคนที่พิมพ์จากแบบฟอร์มเปล่า
- เก็บการตัดสินใจไว้ในที่ที่ควรอยู่การอนุมัติ การตรวจสอบ และการเก็บรักษาข้อมูลยังอยู่ในระบบของคุณภายใต้นโยบายของคุณ API มีส่วนร่วมแค่ข้อความเท่านั้น
ค่าใช้จ่ายของคิวรับสมัคร
| ปริมาณงาน | จำนวนหน้า | เครดิต |
|---|---|---|
| ผู้สมัครหนึ่งราย (เอกสารหนึ่งใบและแบบฟอร์มหนึ่งใบ) | 2 | 13 |
| ผู้สมัคร 300 รายต่อวัน | 600 | 3,900 |
| หนึ่งเดือนทำการ 22 วันในอัตราเดียวกัน | 85,800 เครดิต | |
รูปภาพทุกไฟล์นับเป็นหนึ่งหน้าที่ 6.5 เครดิต ค่าใช้จ่ายของคิวจึงเท่ากับจำนวนภาพถ่ายในคิวนั้น
สิ่งที่ผู้สมัครส่งมาจริง
photo_1.jpg เอกสารที่ถือถ่ายเอียง 1 หน้า photo_2.jpg แบบฟอร์มที่กรอกแล้ว มีรอยพับ 1 หน้า จุดที่ทำให้ยาก: เครื่องหมายที่ซ้อนอยู่เหนืออักษรไทย อยู่บนแกนเดียวกับที่ภาพถ่ายเอียงบีบเข้าหากัน ชื่อกับที่อยู่ที่ตามมาถูกส่งมาเป็นสายอักขระ ชุดเดียว โดยไม่มีช่องว่างคั่นระหว่างคำใดเลย
ทั้งสองหน้าเป็นเอกสารที่ส่งกันตามปกติ และทั้งสองหน้าคือกรณีที่ระบบอ่านภาษาไทยต้องรับมือก่อนเป็นอย่างแรก ไม่ใช่ไฟล์สแกนสะอาดที่มักถูกใช้สาธิต
สิ่งที่ระบบทำ และสิ่งที่ยังเป็นของคุณ
- โมเดลอ่าน
- คืนข้อความที่อ่านออกบนหน้าเอกสาร ในรูป Markdown หรือบล็อกที่มีชนิดข้อมูล
- คุณตัดสินใจ
- ว่าเอกสารเป็นของจริงหรือไม่ อนุมัติผู้สมัครหรือไม่ และฐานทางกฎหมายของคุณตาม PDPA คืออะไร
- เราไม่ได้ตรวจสอบตัวตน
- ไม่มีการเทียบใบหน้า ไม่มีการตรวจว่าเป็นบุคคลจริง และไม่มีสัญญาณความแท้ของเอกสาร นี่คือผู้อ่าน ไม่ใช่ผู้ตรวจสอบ
พระราชบัญญัติคุ้มครองข้อมูลส่วนบุคคลกำกับการเก็บรวบรวม ใช้ และเปิดเผยข้อมูลส่วนบุคคลในประเทศไทย และกำหนดเงื่อนไขที่เข้มขึ้นสำหรับข้อมูลอ่อนไหว การปฏิบัติตามหน้าที่เหล่านั้นเป็นความรับผิดชอบของผู้ใช้งาน ไม่ใช่ของ API
สำหรับนักพัฒนา
ผลลัพธ์แบบ structured เหมาะกับงานนี้ที่สุด คำตอบในแบบฟอร์มมาเป็นบล็อกที่มีชนิดข้อมูล แทนที่จะเป็นย่อหน้าที่ต้องมาแยกเองอีกครั้ง
# Encode without line wrapping: wrapped base64 breaks the JSON string.
DOC=$(base64 < invoice.pdf | tr -d '\n')
# --max-time covers a multi-page document; curl defaults to no limit.
curl -X POST https://api.paxalabs.com/v1/ocr \
--max-time 300 \
-H "Authorization: Bearer $PAXA_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"document\": \"$DOC\", \"model\": \"paxa-ocr-lite-v1\"}"DOC=$(base64 < invoice.pdf | tr -d '\n')
curl -X POST https://api.paxalabs.com/v1/ocr \
--max-time 300 \
-H "Authorization: Bearer $PAXA_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"document\": \"$DOC\", \"model\": \"paxa-ocr-lite-v1\", \"output\": \"structured\"}"import base64
import os
import requests
with open("invoice.pdf", "rb") as file:
document = base64.b64encode(file.read()).decode()
response = requests.post(
"https://api.paxalabs.com/v1/ocr",
headers={"Authorization": f"Bearer {os.environ['PAXA_API_KEY']}"},
json={"document": document, "model": "paxa-ocr-lite-v1"},
# A multi-page document can run for minutes; give it room.
timeout=300,
)
response.raise_for_status()
body = response.json()
print(body["pages"][0]["markdown"], body["usage"]["credits"], "credits")ภาพถ่ายข้อความไทยอ่านยากกว่าไฟล์สแกน
ภาษาไทยซ้อนเครื่องหมายได้ถึงสี่ชั้นในแนวตั้งเหนืออักษรฐานตัวเดียว และภาพถ่ายจากมือถือที่ถ่ายเอียงก็บีบแกนนั้นพอดี ภาษาไทยยังเขียนติดกันโดยไม่เว้นวรรคระหว่างคำ ชื่อกับที่อยู่ที่ตามมาจึงมาเป็นสายอักขระชุดเดียว ทั้งสองเรื่องคือเหตุผลว่าทำไมเอกสารที่ผู้สมัครถ่ายเอง ไม่ใช่ที่สำนักงานสแกนให้ จึงเป็นกรณีที่ต้องออกแบบระบบอ่านภาษาไทยมาเพื่อมันตั้งแต่ต้น ไม่ใช่ดัดแปลงเอาทีหลัง
คำถามที่พบบ่อย
- ระบบนี้ยืนยันตัวตนให้ไหม
- ไม่ ระบบอ่านสิ่งที่อ่านออกบนหน้าเอกสาร ไม่มีการเทียบใบหน้า ไม่มีการตรวจว่าเป็นบุคคลจริง และไม่มีสัญญาณความแท้ของเอกสาร ผลการอ่านจึงไม่ควรถือเป็นหลักฐานว่าเอกสารเป็นของจริง
- ใช้ระบบนี้แล้วถือว่าปฏิบัติตาม PDPA แล้วหรือไม่
- ไม่ พระราชบัญญัติคุ้มครองข้อมูลส่วนบุคคลกำหนดหน้าที่ไว้กับผู้เก็บรวบรวมข้อมูล ทั้งฐานทางกฎหมายที่ใช้และการจัดการข้อมูลอ่อนไหว การใช้ API อ่านหน้าเอกสารไม่ได้เปลี่ยนสิ่งเหล่านั้นเลย
- ถ้าภาพเบลอหรือถ่ายไม่ครบจะเป็นอย่างไร
- การอ่านจะคืนเฉพาะส่วนที่อ่านออก และไม่แต่งส่วนที่เหลือขึ้นมา นี่คือพฤติกรรมที่ควรเป็นสำหรับงานนี้ ช่องที่ว่างซึ่งเจ้าหน้าที่เห็นได้ ปลอดภัยกว่าคำตอบที่ดูมั่นใจแต่ไม่มีใครตรวจ
- อ่านลายมือในแบบฟอร์มได้ไหม
- แบบฟอร์มพิมพ์ที่กรอกด้วยลายมือคือกรณีที่พบบ่อย และระบบพยายามอ่านทั้งสองส่วน เราไม่เผยแพร่ตัวเลขความแม่นยำ จึงขอแนะนำให้ทดสอบกับแบบฟอร์มที่ผู้สมัครของคุณส่งมาจริงก่อนนำไปใช้งาน
เริ่มต้นด้วยเครดิตฟรี
เข้าสู่ระบบด้วย Google, GitHub หรือ Hugging Face แล้วใช้เครดิตฟรี 100 เครดิตกับข้อความของคุณเอง