# OCR และแปลงข้อความเป็นข้อความแบบท้องถิ่น

Canonical page: https://phishdestroy.github.io/TgWitness/th/docs/reference/media-analysis/

ระบุภาพและเสียงที่บันทึกได้ด้วย local worker; รักษาข้อความที่สร้างขึ้นให้เชื่อมโยงกับไฟล์ต้นฉบับ

**เนื้อหาหลักปัจจุบัน:** ใช้การเช็คเอาต์จากแหล่งที่มา; เวอร์ชัน 0.7.0 portable preview ยังไม่มีคุณสมบัตินี้

[คู่มือขั้นตอนการทำงาน](https://phishdestroy.github.io/TgWitness/docs/archive/) · [Wiki](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Archive-and-Integrations.md)

เปิดบันทึกสมุดบันทึก`media.saved`, เลือก **“Recognize attachment”** (**ระบุไฟล์แนบ**), แล้วเลือก “OCR” หรือ “transcription” (การถอดความ) ภายใต้ **“Ask the archive” (ถามคลังข้อมูล)**. การประมวลผลเป็นแบบทำด้วยมือและดำเนินการในเครื่องท้องถิ่น. ไม่มีโหมดสื่อบนคลาวด์หรือการอัปโหลดอัตโนมัติ ไบต์ของไฟล์แนบต้นฉบับและ `media_sha256` ยังคงไม่เปลี่ยนแปลง; ข้อความที่ได้รับการระบุจะถูกทำเครื่องหมายอย่างชัดเจนว่าเป็น การระบุโดยเครื่อง และเก็บไว้แยกต่างหากพร้อมกับแฮชของแหล่งที่มา, เวอร์ชันของเอนจิน/โมเดล, ภาษา, พารามิเตอร์ และเวลาที่เสร็จสิ้น การถอดความจะรักษาเวลาประทับที่ส่งกลับมา

ค้นหาผลลัพธ์เหล่านี้โดยใช้ฟังก์ชัน **"ค้นหาข้อความที่ระบบระบุ**" และตัวกรอง OCR/transcript นี่เป็นการค้นหาข้อมูลที่สกัดแยกต่างหาก; ระบบจะไม่แปลงข้อความที่ระบบ ระบุโดยอัตโนมัติให้เป็นข้อความต้นฉบับของ Telegram หรือเพิ่มมันเข้าไปในเหตุการณ์ที่ลงนาม

## ตั้งค่า worker (ไม่บังคับ)

เวอร์ชัน 1 ต้องการเครื่องโฮสต์ Linux ที่มี Docker daemon ท้องถิ่น สำหรับการติดตั้งบน Windows สามารถรัน TgWitness ภายในสภาพแวดล้อม Linux VM/WSL ที่มี Docker daemon ท้องถิ่นของตัวเอง แผงควบคุมจะไม่ถอดรหัสไฟล์แนบที่ไม่น่าเชื่อถือด้วยตัวเอง

```
docker build -f deploy/media-worker/Dockerfile -t tgwitness-media:local .
export TGWITNESS_MEDIA_IMAGE=tgwitness-media:local
```

ตั้งค่าตัวแปรเหล่านี้ในสภาพแวดล้อมบริการ TgWitness แล้วรีสตาร์ทบริการใหม่ ซ็อกเก็ตของเดมอนมีค่าเริ่มต้นเป็น `/var/run/docker.sock`; สำหรับการติดตั้งแบบ rootless สามารถตั้งค่าเป็น `TGWITNESS_DOCKER_SOCKET` ได้ ส่วน worker จะใช้ซ็อกเก็ต Unix ดังกล่าวอย่างชัดเจน แทนที่จะใช้บริบท Docker ระยะไกล อย่าเปิดเผย API ของ Docker ให้ผู้ใช้แผงควบคุม หรือติดตั้ง ซ็อกเก็ตของมันภายในคอนเทนเนอร์การระบุตัวตน

สำหรับการถอดข้อความ ให้ติดตั้งโมเดล Whisper ที่เข้ากันได้กับ CTranslate2 แยกต่างหาก จากนั้นตั้งค่า `TGWITNESS_WHISPER_MODEL_DIR` เป็นไดเรกทอรีของโมเดลนั้น ผู้ทำงานจะโหลดโมเดลด้วย `local_files_only=True`; โมเดลที่เลือกและข้อมูลนำเข้าจะถูกติดตั้งในโหมดอ่านอย่างเดียว ดู[เอกสารการโหลด](https://github.com/SYSTRAN/faster-whisper)โมเดลของเครื่องยนต์ ภาพ OCR ที่มาพร้อมระบบมีข้อมูลฝึกอบรมทั้งภาษาอังกฤษและภาษารัสเซีย สร้าง ภาษาอื่นเพิ่มเข้าไปในภาพของคุณเมื่อจำเป็น; รหัสภาษาตามมาตรฐาน [CLI ของ Tesseract](https://tesseract-ocr.github.io/tessdoc/Command-Line-Usage.html)

ไม่มีการเรียกใช้โมเดลใดระหว่างการประมวลผล การสร้าง/ดาวน์โหลดชุดติดตั้งอาจใช้เครือข่าย; แต่ละคอนเทนเนอร์การจดจำจริงมีเครือข่ายถูกปิดไว้ ให้ติดตั้งภาพ ก่อนที่จะเปิดใช้งาน; ช่วงการทำงานใช้ `--pull=never`.

## ขอบเขตและการกู้คืน

คอนเทนเนอร์ทำงานในฐานะผู้ใช้ที่ไม่มีสิทธิ์พิเศษ ด้วย root แบบอ่านอย่างเดียว, ความสามารถที่ถูกตัดทอน `no-new-privileges` , CPU หนึ่งตัว, หน่วยความจำ 2 GiB, ข้อจำกัด PID และระบบไฟล์ชั่วคราว ที่มีขอบเขตจำกัด เฉพาะสำเนาที่ได้รับการยืนยันของไฟล์ที่เลือกและไดเรกทอรีโมเดล แบบเลือกได้เท่านั้นที่ถูกติดตั้ง ฐานข้อมูล vault และเซสชันของตัวเก็บรวบรวม ไม่ถูกติดตั้ง [แฟล็ก ของ Docker runtime](https://docs.docker.com/reference/cli/docker/container/run/) บังคับใช้ข้อจำกัดเหล่านี้; สิ่งนี้ยังคงเป็นขอบเขตของคอนเทนเนอร์ ไม่ใช่เขตปลอดภัยของฮาร์ดแวร์

ไฟล์มีขนาดจำกัดที่ 50 MiB, ภาพที่ 20 ล้านพิกเซล, เสียงที่ 30 นาทีสำหรับ ไฟล์ที่มีระยะเวลาทราบแน่ชัด, และเวลาประมวลผลที่ 5 นาที มี worker หนึ่งตัวทำงานได้ครั้งละหนึ่งตัว โดยมีงานในคิว/กำลังทำงานได้สูงสุด 20 งาน และงานที่เก็บไว้ได้สูงสุด 100 งานต่อพื้นที่ทำงาน การยกเลิกจะหยุดคอนเทนเนอร์; การลองใหม่จะสร้างงานใหม่ที่เชื่อมโยงกับความพยายามครั้งก่อน งานที่ถูกขัดจังหวะจะถูกทำเครื่องหมายหลังการเริ่มต้นใหม่ การประมวลผลอาจล้มเหลวเมื่อโมเดล ไม่สามารถปรับให้เข้ากับขีดจำกัดที่กำหนดไว้ได้; มันจะไม่ทำงานเงียบๆ โดยไม่มีการแยกส่วน
