วิธีการทำงานของการรู้จำ
วิธีการทำงานของการจดจำ
หน้านี้อธิบายถึงสิ่งที่ AsposeOcr.Recognize() ทำภายในจริง ๆ ตั้งแต่การตรวจสอบอินพุตจนถึง RecognitionResult สุดท้าย การเรียก AsposeOcr.Recognize(OcrInput) จะดำเนินการผ่านสายการทำงานที่กำหนดไว้แปดขั้นตอน ทุกขั้นตอนด้านล่างอิงจากการทำงานของไลบรารีเอง — ไม่มีขั้นตอนที่สามารถกำหนดค่าได้.
1. การตรวจสอบอินพุต
ก่อนที่โมเดลใดจะถูกโหลด, Recognize() จะตรวจสอบ OcrInput: มันจะปฏิเสธอินพุต null (ArgumentNullException), InputType ที่ไม่รองรับ (NotSupportedException), และเส้นทางใด ๆ ที่อยู่ในคิวซึ่งไม่มีอยู่บนดิสก์ (FileNotFoundException). จะไม่มีการสร้างเซสชัน ONNX จนกว่าทุกอินพุตจะผ่านการตรวจสอบ.
2. การเรนเดอร์ PDF หรือการโหลด Raster
สำหรับ InputType.PDF, แต่ละหน้าจะถูกเรนเดอร์เป็นภาพ 24-bit RGB ที่ 150 DPI using Aspose.PDF.FOSS. สำหรับ InputType.SingleImage, ไฟล์เรสเตอร์ถูกโหลดโดยตรง. ความละเอียดการเรนเดอร์ 150 DPI ถูกกำหนดคงที่และไม่สามารถปรับเปลี่ยนได้.
3. การเตรียมข้อมูลล่วงหน้าสำหรับตัวตรวจจับ
ภาพจะถูกแปลงเป็นระดับสีเทาโดยใช้ น้ำหนักลูมาของ Rec. 709, ซึ่งรักษาความสว่างที่รับรู้ได้อย่างแม่นยำกว่าการเฉลี่ยช่องสีแบบง่าย หากด้านที่ยาวที่สุดของภาพเกิน 1000 พิกเซล จะทำการลดขนาดด้วย separable Lanczos-8 กรอง (สองการผ่านแบบมิติเดียว) เพื่อให้สอดคล้องกับการทำค่าสำหรับการฝึกของโมเดลตรวจจับ แถบสีขาวความกว้าง 32 พิกเซลจะถูกต่อท้ายที่ด้านล่างของภาพเพื่อเหตุผลเดียวกัน.
4. การตรวจจับพื้นที่
ภาพที่ผ่านการเตรียมล่วงหน้าถูกส่งผ่านโมเดล ONNX ฝังตัวแรก ซึ่งสร้างแผนที่ความน่าจะเป็นของข้อความและคุณลักษณะภาพระดับกลาง โมเดล ONNX ตัวที่สอง — โมเดลปรับแต่ง — เสริมความเชื่อมโยงระหว่างอักขระที่อยู่ติดกันเพื่อให้บรรทัดข้อความเต็มถูกตรวจจับเป็นหนึ่งพื้นที่แทนหลายชิ้น ทั้งสองโมเดลทำงานบน CPU พร้อมกับ Microsoft.ML.OnnxRuntime ที่กำหนดให้ใช้ 8 เธรดงานภายในปฏิบัติการ.
5. การประมวลผลหลังการตรวจจับพื้นที่
แผนที่ความน่าจะเป็นของข้อความและลิงก์ของตัวตรวจจับจะถูกตั้งค่าเกณฑ์แล้วจัดกลุ่มด้วยการเติมเต็มแบบกว้างก่อนแบบสี่เชื่อมต่อ. แต่ละพื้นที่ที่ได้จะถูกขยาย, ใส่กรอบสี่เหลี่ยมที่มีพื้นที่ต่ำสุด, ย้อนกลับสู่พิกัดของภาพต้นฉบับ, และลดให้เป็นสี่เหลี่ยมเส้นตรงที่ไม่ซ้อนกันและจัดแนวตามแกน. สี่เหลี่ยมเหล่านี้คือผลลัพธ์ที่ RecognitionResult.LinesResult.Line ส่งคืนในที่สุด.
6. การจดจำบรรทัด
แต่ละสี่เหลี่ยมที่ตรวจจับได้จะถูกเพิ่มขอบสองพิกเซล ตัดออกจากภาพต้นฉบับ และปรับขนาด — รักษาอัตราส่วนภาพ — ไปยังพื้นผิวคงที่ 1200×32 แคนวาสสีขาว ผลลัพธ์จะถูกแปลงเป็นเทนเซอร์ระดับสีเทาแบบ NHWC และส่งต่อไปยังโมเดลการจดจำ.
7. การถอดรหัส CTC
ผลลัพธ์ดิบของโมเดลการจดจำจะถูกถอดรหัสด้วยวิธี greedy CTC (การจำแนกเชิงเวลาแบบเชื่อมต่อ) การถอดรหัส: คำจำกัดความที่ทำนายซ้ำจะถูกรวมกัน คลาสว่างจะถูกลบออก และคลาสที่เหลือจะถูกแมปผ่านอักษรละตินที่ฝังในโมเดลเพื่อสร้างข้อความที่จดจำได้ของบรรทัด.
8. การประกอบผลลัพธ์
บรรทัดที่จดจำได้จะถูกจับคู่กับสี่เหลี่ยมของภาพต้นทางเพื่อสร้างแต่ละ RecognitionResult.LinesResult. บรรทัดที่ไม่ว่างเปล่าทั้งหมดจะถูกเชื่อมต่อด้วยการขึ้นบรรทัดของแพลตฟอร์มเพื่อสร้าง RecognitionResult.RecognitionText.
การทำงานแบบต่อเนื่อง vs. แบบขนาน
ไฟล์อินพุตและสำหรับ PDF หน้าแต่ละหน้าจะถูกประมวลผล sequentially — ไม่มีการทำหลายเธรดระดับอินพุต API. การทำขนานมีเฉพาะภายในแต่ละการเรียกใช้การอนุมาน ONNX เท่านั้น, ซึ่ง Microsoft.ML.OnnxRuntime ทำการขนานการดำเนินกราฟข้าม 8 เธรด intra-operation ที่กำหนดค่าไว้ของมัน.