Doctranslate.io

API การแปลรูปภาพ: การผสานการทำงานที่รวดเร็วและแม่นยำสำหรับภาษาเวียดนาม

เขียนโดย

อุปสรรคทางเทคนิคของการแปลรูปภาพอัตโนมัติ

การแปลข้อความภายในรูปภาพโดยอัตโนมัติเป็นงานที่ซับซ้อนกว่าการแทนที่ข้อความต่อข้อความแบบง่าย ๆ มาก
กระบวนการนี้เกี่ยวข้องกับขั้นตอนของเทคโนโลยีที่ซับซ้อนซึ่งต้องทำงานร่วมกันอย่างสมบูรณ์แบบเพื่อให้ได้ผลลัพธ์ที่ใช้งานได้
คู่มือนี้จะสำรวจความท้าทายที่นักพัฒนาต้องเผชิญและนำเสนอโซลูชันที่แข็งแกร่งโดยใช้ API การแปลรูปภาพสำหรับโปรเจกต์ภาษาอังกฤษเป็นภาษาเวียดนาม

ความแม่นยำของการรู้จำอักขระด้วยแสง (OCR)

ขั้นตอนแรกและสำคัญที่สุดในการแปลรูปภาพคือการดึงข้อความต้นฉบับออกมาอย่างแม่นยำ
กระบวนการนี้เรียกว่า Optical Character Recognition (OCR) ซึ่งเต็มไปด้วยความท้าทายที่อาจนำไปสู่ข้อผิดพลาดในการแปล
เอนจิ้น OCR ต้องสามารถระบุอักขระได้อย่างถูกต้องแม้จะมีความแตกต่างในเรื่องฟอนต์ ขนาด และสี ซึ่งต้องใช้โมเดลที่ผ่านการฝึกฝนมาอย่างดี

นอกจากนี้ รูปภาพในโลกแห่งความเป็นจริงมักมีข้อความบนพื้นหลังที่มีสัญญาณรบกวนหรือซับซ้อน ข้อความที่บิดเบี้ยวหรือหมุน หรือแม้แต่ข้อความที่มีสไตล์ซึ่งออกแบบมาเพื่อผลทางศิลปะ
ปัจจัยแต่ละอย่างเหล่านี้สามารถลดความแม่นยำของเครื่องมือ OCR มาตรฐานได้อย่างมาก ซึ่งนำไปสู่การป้อนข้อมูลที่อ่านไม่ออกสำหรับเอนจิ้นการแปล
รูปภาพต้นฉบับที่มีความละเอียดต่ำยิ่งทำให้ปัญหาเหล่านี้ซับซ้อนขึ้น ทำให้การดึงข้อความที่แม่นยำกลายเป็นอุปสรรคทางวิศวกรรมที่ยิ่งใหญ่ที่ต้องก้าวข้าม

การรักษารูปแบบและการออกแบบ

เมื่อข้อความถูกดึงและแปลแล้ว ความท้าทายที่สำคัญถัดไปคือการนำข้อความกลับเข้าไปในรูปภาพโดยไม่ทำลายการออกแบบดั้งเดิม
ข้อความที่แปลแล้วมักมีจำนวนอักขระหรือความยาวของคำไม่เท่ากับข้อความต้นฉบับ ตัวอย่างเช่น วลีภาษาเวียดนามอาจยาวหรือสั้นกว่าวลีภาษาอังกฤษที่เทียบเท่ากัน
การขยายหรือหดตัวของข้อความนี้อาจทำให้เนื้อหาที่แปลแล้วล้นขอบเขตเดิม ทำลายรูปแบบการมองเห็นและประสบการณ์ของผู้ใช้

นักพัฒนาต้องคำนวณขนาดของข้อความใหม่โดยใช้โปรแกรมและตัดสินใจว่าจะใส่ข้อความกลับเข้าไปในรูปภาพได้อย่างไร
ซึ่งอาจรวมถึงการปรับขนาดฟอนต์ การแก้ไขการขึ้นบรรทัดใหม่ หรือแม้แต่การจัดระยะห่างขององค์ประกอบโดยรอบใหม่ ทั้งหมดนี้ต้องทำไปพร้อมกับการรักษาความสมบูรณ์ทางสุนทรียศาสตร์
การทำงานนี้ในปริมาณมากสำหรับรูปภาพหลายพันภาพต้องใช้เอนจิ้นการจัดวางที่ชาญฉลาดซึ่งเข้าใจหลักการออกแบบ ซึ่งเป็นคุณสมบัติที่ไม่มีในบริการแปลพื้นฐาน

การจัดการรูปแบบไฟล์ที่ซับซ้อนและการเรนเดอร์

รูปภาพมีหลายรูปแบบ เช่น JPEG, PNG และ BMP ซึ่งแต่ละรูปแบบมีข้อกำหนดการบีบอัดและการเข้ารหัสของตัวเอง
API ที่แข็งแกร่งต้องสามารถแยกวิเคราะห์รูปแบบต่าง ๆ เหล่านี้ แยกส่วนรูปภาพเพื่อแยกเลเยอร์ข้อความ จากนั้นสร้างขึ้นใหม่พร้อมกับข้อความที่แปลแล้ว
กระบวนการนี้ต้องไม่สูญเสียคุณภาพให้มากที่สุดเท่าที่จะเป็นไปได้เพื่อรักษาคุณภาพของกราฟิกดั้งเดิม

ขั้นตอนสุดท้าย คือการเรนเดอร์ข้อความที่แปลแล้วกลับลงบนรูปภาพ ซึ่งเพิ่มความซับซ้อนอีกชั้นหนึ่ง โดยเฉพาะสำหรับภาษาที่มีอักขระเฉพาะตัว
ระบบจำเป็นต้องเข้าถึงฟอนต์ที่เหมาะสมซึ่งรองรับสัญลักษณ์ (glyph) ที่จำเป็นทั้งหมด เช่น เครื่องหมายการออกเสียงที่ใช้ในภาษาเวียดนาม
หากไม่มีการจัดการฟอนต์ที่เหมาะสม ข้อความที่เรนเดอร์อาจปรากฏเป็นกล่องสี่เหลี่ยมว่างเปล่าหรืออาร์ติแฟกต์อื่น ๆ ที่เรียกว่า “tofu” ทำให้ผลลัพธ์สุดท้ายไม่สามารถอ่านได้เลย

ขอแนะนำ Doctranslate Image Translation API

Doctranslate API เป็นโซลูชันที่สร้างขึ้นโดยเฉพาะเพื่อเอาชนะความซับซ้อนของการแปลรูปภาพ
API นี้มีอินเทอร์เฟซ RESTful ที่เรียบง่ายแต่ทรงพลังสำหรับนักพัฒนา เพื่อเชื่อมต่อกับแบ็กเอนด์ที่ซับซ้อนซึ่งจัดการเวิร์กโฟลว์ทั้งหมดตั้งแต่ OCR ไปจนถึงการเรนเดอร์ขั้นสุดท้าย
ด้วยการซ่อนกระบวนการที่ยุ่งยากไว้ ทำให้คุณสามารถผสานการแปลรูปภาพภาษาอังกฤษเป็นภาษาเวียดนามคุณภาพสูงเข้ากับแอปพลิเคชันของคุณได้โดยตรงด้วยความพยายามเพียงเล็กน้อย

API นี้ออกแบบมาเพื่อความสามารถในการขยายขนาดและความน่าเชื่อถือ โดยทำงานบนโมเดลแบบอะซิงโครนัสซึ่งเหมาะอย่างยิ่งสำหรับการจัดการไฟล์ขนาดใหญ่หรืองานประมวลผลแบบกลุ่ม
เพียงแค่คุณส่งรูปภาพของคุณ และ API จะส่งคืน ID งาน (job ID) ซึ่งช่วยให้แอปพลิเคชันของคุณทำงานต่อไปได้โดยไม่ถูกบล็อก
เมื่อการแปลเสร็จสิ้น คุณสามารถดึงรูปภาพที่เรนเดอร์เสร็จสมบูรณ์แล้ว โดยที่ยังคงรักษารูปแบบและคุณภาพดั้งเดิมไว้ได้

คุณสมบัติหลักสำหรับนักพัฒนา

Doctranslate API เต็มไปด้วยคุณสมบัติที่ออกแบบมาเพื่อให้ได้ผลลัพธ์ระดับมืออาชีพ
พื้นฐานของมันคือ เอนจิ้น OCR ที่ล้ำสมัย ซึ่งเป็นเลิศในการดึงข้อความจากรูปภาพที่ท้าทายด้วยความแม่นยำสูง
สิ่งนี้ทำให้มั่นใจได้ว่าข้อมูลที่ป้อนเข้าสู่โมดูลการแปลนั้นสะอาดและถูกต้อง ซึ่งเป็นขั้นตอนแรกสู่การแปลที่ไร้ที่ติ

บางทีข้อได้เปรียบที่สำคัญที่สุดคือ เทคโนโลยีการรักษารูปแบบที่ชาญฉลาด
API จะวิเคราะห์ตำแหน่งดั้งเดิมของข้อความและพยายามจัดวางเนื้อหาที่แปลแล้วให้พอดีกับพื้นที่เดิม โดยปรับขนาดฟอนต์และตัวแบ่งบรรทัดโดยอัตโนมัติตามความจำเป็น
นอกจากนี้ยังรองรับรูปแบบไฟล์ที่หลากหลาย รวมถึง PNG, JPEG และ BMP ซึ่งให้ความยืดหยุ่นที่จำเป็นสำหรับโปรเจกต์ที่หลากหลาย

เทคโนโลยีเบื้องหลังมีความซับซ้อนอย่างไม่น่าเชื่อ ทำให้นักพัฒนาสามารถผสานโซลูชันที่สามารถ จดจำและแปลข้อความบนรูปภาพ ได้อย่างแม่นยำน่าทึ่ง
สิ่งนี้ช่วยลดภาระงานหนักด้าน OCR และการจัดการรูปภาพจากสแต็กแอปพลิเคชันของคุณ
ช่วยให้คุณสามารถมุ่งเน้นไปที่ตรรกะทางธุรกิจหลักแทนที่จะต้องสร้างไปป์ไลน์การประมวลผลสื่อที่ซับซ้อนตั้งแต่ต้น

คู่มือทีละขั้นตอน: การผสาน API กับ Python

ส่วนนี้ให้คำแนะนำเชิงปฏิบัติทีละขั้นตอนสำหรับการผสาน Doctranslate Image translation API เข้ากับแอปพลิเคชัน Python
เราจะใช้ไลบรารี `requests` ที่เป็นที่นิยมในการจัดการการสื่อสาร HTTP เพื่อสาธิตวิธีการอัปโหลดรูปภาพ เริ่มกระบวนการแปล และดึงผลลัพธ์
ตัวอย่างเชิงปฏิบัตินี้จะครอบคลุมการยืนยันตัวตน การจัดรูปแบบคำขอ และการจัดการการตอบกลับสำหรับงานแปลภาษาอังกฤษเป็นภาษาเวียดนามโดยทั่วไป

ข้อกำหนดเบื้องต้น

ก่อนที่คุณจะเริ่มเขียนโค้ดใด ๆ คุณต้องแน่ใจว่าสภาพแวดล้อมของคุณได้รับการตั้งค่าอย่างถูกต้อง
คุณจะต้องมีการติดตั้ง Python 3.6 หรือใหม่กว่าที่ใช้งานได้บนระบบของคุณ
คุณจะต้องใช้คีย์ Doctranslate API ซึ่งคุณสามารถรับได้โดยการลงทะเบียนบนพอร์ทัลนักพัฒนาของ Doctranslate

ขั้นตอนที่ 1 – การตั้งค่าสภาพแวดล้อมของคุณ

สิ่งที่ต้องพึ่งพาจากภายนอกเพียงอย่างเดียวสำหรับคู่มือนี้คือไลบรารี `requests` ซึ่งช่วยให้การส่งคำขอ HTTP ใน Python ง่ายขึ้น
หากคุณยังไม่ได้ติดตั้ง คุณสามารถเพิ่มลงในสภาพแวดล้อมของคุณได้โดยการรันคำสั่งง่าย ๆ ในเทอร์มินัลของคุณ
คำสั่งนี้ใช้ pip ซึ่งเป็นตัวติดตั้งแพ็คเกจของ Python เพื่อดาวน์โหลดและติดตั้งไลบรารีให้คุณ


pip install requests

ขั้นตอนที่ 2 – การยืนยันตัวตนคำขอของคุณ

คำขอทั้งหมดไปยัง Doctranslate API จะต้องได้รับการยืนยันตัวตนโดยใช้คีย์ API ที่ไม่ซ้ำกันของคุณ
คีย์ควรจะรวมอยู่ในส่วนหัว `Authorization` ของคำขอ HTTP ของคุณ โดยมีคำว่า `Bearer` นำหน้า
สิ่งสำคัญคือต้องจัดการคีย์ API ของคุณเป็นความลับ หลีกเลี่ยงการฮาร์ดโค้ดโดยตรงในซอร์สโค้ดของคุณ และใช้ตัวแปรสภาพแวดล้อมหรือระบบจัดการข้อมูลลับแทน

ขั้นตอนที่ 3 – การอัปโหลดและแปลรูปภาพ

หัวใจของกระบวนการคือการส่งคำขอ `POST` ไปยังเอนด์พอยต์ `/document/translate`
คำขอนี้ต้องเป็นคำขอแบบ multipart/form-data ซึ่งมีไฟล์รูปภาพเองพร้อมกับพารามิเตอร์ที่ระบุภาษาที่ต้องการแปล
สำหรับกรณีการใช้งานของเรา `source_language` จะเป็น ‘en’ และ `target_language` จะเป็น ‘vi’


import requests
import json
import time

# คีย์ API ของคุณจากพอร์ทัลนักพัฒนา
API_KEY = "YOUR_API_KEY_HERE"
API_URL = "https://developer.doctranslate.io"

# กำหนดส่วนหัวสำหรับการยืนยันตัวตนและเวอร์ชันของ API
headers = {
    "Authorization": f"Bearer {API_KEY}",
    "X-API-VERSION": "3"
}

# กำหนดเส้นทางไปยังไฟล์รูปภาพต้นฉบับของคุณ
file_path = "path/to/your/image.png"

# เปิดไฟล์ในโหมดอ่านแบบไบนารี
with open(file_path, "rb") as f:
    # กำหนดพารามิเตอร์ของ API
    data = {
        "source_language": "en",
        "target_language": "vi"
    }
    
    # เตรียมไฟล์สำหรับคำขอแบบ multipart
    files = {
        'file': (file_path, f, 'image/png')
    }
    
    # ส่งคำขอ POST เพื่อเริ่มงานแปล
    response = requests.post(f"{API_URL}/document/translate", headers=headers, data=data, files=files)

    if response.status_code == 200:
        job_data = response.json()
        print(f"Successfully started translation job: {job_data['id']}")
    else:
        print(f"Error starting job: {response.status_code} {response.text}")

ขั้นตอนที่ 4 – การดึงรูปภาพที่แปลแล้ว

เนื่องจากการประมวลผลรูปภาพอาจใช้เวลา API จึงทำงานแบบอะซิงโครนัส
คำขอ `POST` เริ่มต้นจะส่งคืน ID งาน ซึ่งคุณใช้เพื่อตรวจสอบสถานะการแปลโดยการส่งคำขอ `GET` ไปยังเอนด์พอยต์ `/document/translate/{id}`
คุณควรสำรวจ (poll) เอนด์พอยต์นี้เป็นระยะ ๆ จนกว่าฟิลด์ `status` ในการตอบกลับจะเปลี่ยนเป็น `completed`

เมื่องานเสร็จสมบูรณ์ การตอบกลับแบบ JSON จะมีฟิลด์ `url`
URL นี้จะชี้ไปยังรูปภาพที่แปลแล้ว ซึ่งคุณสามารถดาวน์โหลดและใช้ในแอปพลิเคชันของคุณได้
ส่วนของโค้ดต่อไปนี้สาธิตกลไกการสำรวจอย่างง่ายเพื่อตรวจสอบสถานะของงานและดาวน์โหลดไฟล์สุดท้าย


# นี่เป็นส่วนต่อเนื่องจากสคริปต์ก่อนหน้า
# สมมติว่า 'job_data' มีการตอบกลับจากคำขอ POST
if 'job_data' in locals() and 'id' in job_data:
    job_id = job_data['id']
    status = ''

    # สำรวจเอนด์พอยต์สถานะจนกว่างานจะเสร็จสมบูรณ์หรือล้มเหลว
    while status not in ['completed', 'failed']:
        print("Checking job status...")
        status_response = requests.get(f"{API_URL}/document/translate/{job_id}", headers=headers)
        if status_response.status_code == 200:
            status_data = status_response.json()
            status = status_data['status']
            print(f"Current status: {status}")
            time.sleep(5) # รอ 5 วินาทีก่อนที่จะตรวจสอบอีกครั้ง
        else:
            print(f"Error fetching status: {status_response.status_code}")
            break

    # หากเสร็จสมบูรณ์ ให้ดาวน์โหลดไฟล์ที่แปลแล้ว
    if status == 'completed':
        download_url = status_data['url']
        translated_file_response = requests.get(download_url)
        with open("translated_image.png", "wb") as f:
            f.write(translated_file_response.content)
        print("Translated image downloaded successfully!")

ข้อควรพิจารณาที่สำคัญสำหรับการแปลภาษาอังกฤษเป็นภาษาเวียดนาม

การแปลเนื้อหาเป็นภาษาเวียดนามมีความท้าทายทางภาษาและทางเทคนิคเฉพาะที่ต้องใช้โซลูชันพิเศษ
ภาษาเวียดนามแตกต่างจากภาษาอื่น ๆ หลายภาษา โดยใช้อักษรที่มาจากภาษาละติน (Quốc ngữ) ซึ่งต้องอาศัยเครื่องหมายการออกเสียงเป็นอย่างมากในการสื่อความหมาย
API การแปลรูปภาพต้องสามารถจัดการกับความแตกต่างเล็กน้อยเหล่านี้ได้อย่างสมบูรณ์แบบเพื่อสร้างผลลัพธ์ที่แม่นยำและอ่านได้

การจัดการเครื่องหมายการออกเสียงและวรรณยุกต์

ภาษาเวียดนามมีวรรณยุกต์ที่แตกต่างกันหกเสียง ซึ่งแสดงโดยเครื่องหมายการออกเสียงที่วางอยู่เหนือหรือใต้สระ
คำคำเดียวอาจมีความหมายแตกต่างกันอย่างสิ้นเชิงขึ้นอยู่กับเครื่องหมายวรรณยุกต์ที่ใช้ ทำให้การจดจำและการเรนเดอร์ที่แม่นยำเป็นสิ่งจำเป็นอย่างยิ่ง
เอนจิ้น OCR ทั่วไปอาจตีความผิดหรือละเว้นเครื่องหมายเหล่านี้ ซึ่งนำไปสู่การแปลที่ไร้สาระ หรือที่แย่กว่านั้นคือ สื่อสารข้อความที่ผิดพลาด

Doctranslate API ใช้ประโยชน์จากเอนจิ้นการแปลและ OCR ที่ได้รับการฝึกฝนมาโดยเฉพาะสำหรับข้อความภาษาเวียดนาม
สิ่งนี้ทำให้มั่นใจได้ว่าเครื่องหมายการออกเสียงไม่เพียงแต่จะถูกจดจำอย่างถูกต้องจากรูปภาพต้นฉบับ แต่ยังคงถูกรักษาไว้ตลอดกระบวนการแปลอีกด้วย
ผลลัพธ์ที่ได้คือ รูปภาพที่แปลแล้วยังคงรักษาความสมบูรณ์ทางภาษาและความหมายที่ตั้งใจไว้ของข้อความดั้งเดิม

การเรนเดอร์ฟอนต์และสัญลักษณ์ (Glyphs)

หลังจากแปลข้อความแล้ว จะต้องเรนเดอร์กลับลงบนรูปภาพโดยใช้ฟอนต์ที่รองรับตัวอักษรเวียดนามอย่างสมบูรณ์
ฟอนต์มาตรฐานจำนวนมากขาดสัญลักษณ์ที่จำเป็นสำหรับการผสมเครื่องหมายการออกเสียงทั้งหมด ซึ่งอาจส่งผลให้เกิดอักขระตัวยึดตำแหน่งหรือการเรนเดอร์ที่ไม่ถูกต้อง
นี่เป็นจุดล้มเหลวที่พบบ่อยในระบบอัตโนมัติและสามารถทำลายรูปลักษณ์ที่เป็นมืออาชีพของกราฟิกสุดท้ายได้

เอนจิ้นการเรนเดอร์ของ Doctranslate จัดการการเลือกฟอนต์อย่างชาญฉลาดเพื่อให้แน่ใจว่าเข้ากันได้อย่างสมบูรณ์กับอักขระภาษาเวียดนาม
เอนจิ้นนี้ทำให้มั่นใจได้ว่าทุกคำ พร้อมด้วยเครื่องหมายวรรณยุกต์เฉพาะทุกตัว จะแสดงผลอย่างถูกต้องและชัดเจนบนรูปภาพที่แปลแล้ว
ความใส่ใจในรายละเอียดนี้รับประกันผลลัพธ์ทางภาพคุณภาพสูงที่พร้อมสำหรับการใช้งานระดับมืออาชีพโดยไม่ต้องแก้ไขด้วยตนเอง

การขยายข้อความและการขึ้นบรรทัดใหม่

ความแตกต่างทางโครงสร้างระหว่างภาษาอังกฤษและภาษาเวียดนามอาจนำไปสู่ความแตกต่างอย่างมีนัยสำคัญในความยาวของประโยค
ปรากฏการณ์นี้เรียกว่าการขยายหรือหดตัวของข้อความ ซึ่งเป็นความท้าทายที่สำคัญในการจัดวาง
ระบบที่ไม่ซับซ้อนซึ่งเพียงแค่แทนที่ข้อความภาษาอังกฤษอาจทำให้ข้อความภาษาเวียดนามใหม่ล้นกรอบหรือเหลือพื้นที่ว่างที่ดูไม่สวยงาม

เอนจิ้นการจัดวางขั้นสูง ภายใน Doctranslate API ได้รับการออกแบบมาเพื่อลดปัญหานี้โดยอัตโนมัติ
เอนจิ้นนี้จะวิเคราะห์พื้นที่ว่างและปรับขนาดฟอนต์ ระยะห่างของคำ หรือการขึ้นบรรทัดใหม่อย่างชาญฉลาดเพื่อให้ข้อความที่แปลแล้วพอดีกับข้อจำกัดของการออกแบบดั้งเดิมอย่างเป็นธรรมชาติ
ระบบอัตโนมัตินี้ช่วยประหยัดเวลาของนักพัฒนาในการปรับแก้ด้วยตนเองได้นับไม่ถ้วน และรับประกันผลลัพธ์ที่สอดคล้องกันทางภาพในรูปภาพที่แปลแล้วทั้งหมด

สรุป: ปรับปรุงเวิร์กโฟลว์การแปลรูปภาพของคุณให้มีประสิทธิภาพ

การแปลข้อความภายในรูปภาพจากภาษาอังกฤษเป็นภาษาเวียดนามเป็นงานที่เต็มไปด้วยความซับซ้อนทางเทคนิค ตั้งแต่ OCR ที่แม่นยำไปจนถึงการเรนเดอร์ข้อความที่คำนึงถึงรูปแบบ
การพยายามสร้างโซลูชันตั้งแต่ต้นต้องใช้ความเชี่ยวชาญอย่างลึกซึ้งในด้านคอมพิวเตอร์วิทัศน์ การประมวลผลภาษาธรรมชาติ และการพิมพ์ดิจิทัล
Doctranslate Image translation API มอบโซลูชันที่ครอบคลุมและพร้อมใช้งานซึ่งจัดการกับความท้าทายเหล่านี้ให้คุณ

ด้วยการผสาน REST API ที่ทรงพลังนี้ คุณสามารถลดเวลาในการพัฒนาลงอย่างมาก ข้ามผ่านอุปสรรคทางวิศวกรรมที่สำคัญ และส่งมอบรูปภาพที่แปลแล้วซึ่งมีความแม่นยำสูงและสวยงามน่ามองให้กับผู้ใช้ของคุณ
การจัดการเครื่องหมายการออกเสียงภาษาเวียดนาม การเรนเดอร์ฟอนต์ และการรักษารูปแบบที่แข็งแกร่งของ API ช่วยให้มั่นใจได้ถึงผลลัพธ์คุณภาพระดับมืออาชีพทุกครั้ง
เราขอแนะนำให้คุณสำรวจเอกสาร API อย่างเป็นทางการเพื่อค้นพบคุณสมบัติขั้นสูงเพิ่มเติมและเริ่มสร้างการผสานการทำงานของคุณตั้งแต่วันนี้

Doctranslate.io - การแปลที่รวดเร็วและแม่นยำในหลายภาษา

แสดงความคิดเห็น

chat