วิธีการประมวลผลหลายภาพเป็นชุดพร้อมกันด้วย Aspose.OCR FOSS for .NET

วิธีการประมวลผลหลายภาพเป็นชุดพร้อมกันด้วย Aspose.OCR FOSS for .NET

Aspose.OCR FOSS สำหรับ .NET สามารถจดจำหลายภาพในการเรียก Recognize() ครั้งเดียว คำแนะนำนี้แสดงวิธีจัดคิวหลายไฟล์ใน OcrInput เดียวและอ่านผลลัพธ์ของพวกมันตามลำดับ.

คู่มือทีละขั้นตอน

ขั้นตอนที่ 1: ติดตั้งแพคเกจ

dotnet add package Aspose.OCR.FOSS

ขั้นตอนที่ 2: เพิ่มหลายไฟล์ลงใน OcrInput หนึ่งรายการ

ไฟล์ทั้งหมดที่เพิ่มใน OcrInput เดียวกันต้องใช้ InputType เดียวกัน พวกมันจะถูกประมวลผลตามลำดับและส่งกลับตามลำดับที่เพิ่ม.

using Aspose.OCR;

var api = new AsposeOcr();
using var input = new OcrInput(InputType.SingleImage);
input.Add("page-1.jpg");
input.Add("page-2.png");

ขั้นตอนที่ 3: จดจำและอ่านผลลัพธ์ตามลำดับ

เรียก AsposeOcr.Recognize() หนึ่งครั้งสำหรับชุดข้อมูลทั้งหมด จากนั้นวนซ้ำ OcrOutput ตามดัชนีเพื่อจับคู่ผลลัพธ์แต่ละรายการกลับไปยังไฟล์ที่มาจาก.

OcrOutput output = api.Recognize(input);

for (int index = 0; index < output.Count; index++)
{
    Console.WriteLine($"Image {index + 1}");
    Console.WriteLine(output[index].RecognitionText);
}

OcrOutput คือรายการที่เรียงลำดับของ RecognitionResult โดยมีรายการหนึ่งรายการต่อแต่ละภาพตามลำดับที่ OcrInput.Add() ถูกเรียก.


ขั้นตอนที่ 4: ประมวลผลชุด PDF หลายหน้าแทน

โมเดลการประมวลผลชุดเดียวกันใช้กับ PDF: สร้าง OcrInput ด้วย InputType.PDF, เพิ่มเส้นทาง PDF หนึ่งรายการ, และ Recognize() จะส่งคืน RecognitionResult หนึ่งรายการต่อหน้า ตามลำดับหน้า.

using var pdfInput = new OcrInput(InputType.PDF);
pdfInput.Add("multi-page-document.pdf");
OcrOutput pages = api.Recognize(pdfInput);
Console.WriteLine($"Pages recognized: {pages.Count}");

ปัญหาที่พบบ่อยและวิธีแก้

Mixing InputType.SingleImage and InputType.PDF เส้นทางในหนึ่ง OcrInput. ไม่รองรับ — แต่ละ OcrInput ถูกสร้างด้วยอันเดียว InputType และรับเฉพาะไฟล์ประเภทนั้นเท่านั้น ใช้สองแยก OcrInput อินสแตนซ์ (และสอง Recognize() การเรียก) หากคุณต้องการประมวลผลทั้งรูปภาพและ PDF พร้อมกัน.

ผลลัพธ์ปรากฏไม่เป็นลำดับ. พวกมันไม่ควร — OcrOutput รักษาลำดับที่แน่นอน OcrInput.Add() ถูกเรียกเข้ามา หากไฟล์ปรากฏเป็นลำดับที่เปลี่ยนแปลง ให้ตรวจสอบว่าโค้ดที่เรียกเพิ่มไฟล์ในลำดับที่ต้องการก่อนทำการเรียก Recognize().

ไฟล์ที่เสียหายหนึ่งไฟล์ทำให้แบตช์ทั้งหมดล้มเหลว. Recognize() ตรวจสอบเส้นทางที่อยู่ในคิวทั้งหมดก่อนดำเนินการสรุปผลโมเดล; หากมีเส้นทางใดไม่พบ การเรียกทั้งหมดจะโยนข้อผิดพลาด FileNotFoundException แทนที่จะข้ามไฟล์นั้น ให้ตรวจสอบเส้นทางด้วยตนเองก่อนหากผลลัพธ์บางส่วนจากแบตช์ขนาดใหญ่เป็นที่ยอมรับ.

คำถามที่พบบ่อย

การทำแบตช์ทำงานไฟล์แบบขนานหรือไม่?

ไม่. ไฟล์และหน้าของ PDF ถูกประมวลผลตามลำดับ — ไม่มีการทำงานหลายเธรดระดับอินพุต API. Microsoft.ML.OnnxRuntime ทำงานขนานได้เฉพาะภายในแต่ละการเรียกสรุปผลเท่านั้น.

มีขีดจำกัดจำนวนไฟล์ที่ OcrInput หนึ่งตัวสามารถเก็บได้หรือไม่?

สาธารณะ API ไม่ได้ระบุขีดจำกัดที่แน่นอน; OcrInput.Add() เพียงแค่คิวเส้นทางเท่านั้น แบตช์ขนาดใหญ่มากจะถูกประมวลผลทีละไฟล์ ดังนั้นอัตราการผ่านข้อมูลจึงเพิ่มขึ้นแบบเชิงเส้น ไม่ใช่แบบขนาน.

ฉันสามารถใช้ตัวอย่าง AsposeOcr เดียวกันซ้ำในหลายแบตช์ได้หรือไม่?

ใช่ — AsposeOcr เองไม่ได้เก็บสถานะต่อการเรียก; การสร้าง OcrInput ใหม่สำหรับแต่ละชุดและการเรียก Recognize() บนอินสแตนซ์ AsposeOcr เดียวกันเป็นรูปแบบปกติ.

ดูเพิ่มเติม

 ภาษาไทย