ดึงตารางจาก PDF ใน C#

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

เราจะครอบคลุมส่วนต่อไปนี้ในบทความนี้:

เหตุใดจึงต้องแยกตารางจาก PDF?

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

การแยกตาราง PDF - การกำหนดค่า API ของ C#

คุณสามารถดึงข้อมูลจากตาราง PDF ได้โดยกำหนดค่า Conholdate.Total สำหรับ .NET ด้วยคำสั่งติดตั้ง NuGet ด้านล่าง:

PM> NuGet\Install-Package Conholdate.Total

แยกตารางจาก PDF ใน C#

ในส่วนนี้เราจะแนะนำการแยกตารางจากเอกสาร PDF โดยใช้ C#

  • การโหลดเอกสาร PDF: โค้ดเริ่มต้นด้วยการโหลดไฟล์ PDF ลงในอ็อบเจ็กต์คลาสเอกสาร
  • Table Absorber: คลาส TableAbsorber ใช้ในการตรวจจับและดูดซับตารางในแต่ละหน้าของ PDF
  • การแยกข้อมูลตาราง: โค้ดจะวนซ้ำผ่านแต่ละตารางที่พบ โดยแยกเนื้อหาของแต่ละเซลล์ในตาราง และพิมพ์ออกมาในรูปแบบที่มีโครงสร้าง

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

// โหลดแหล่งที่มาของเอกสาร PDF
var filePath = "input.pdf";
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(filePath);
foreach (var page in pdfDocument.Pages)
{
    Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
    absorber.Visit(page);
    foreach (AbsorbedTable table in absorber.TableList)
    {
        Console.WriteLine("Table");
        foreach (AbsorbedRow row in table.RowList)
        {
            foreach (AbsorbedCell cell in row.CellList)
            {
                foreach (TextFragment fragment in cell.TextFragments)
                {
                    var sb = new StringBuilder();
                    foreach (TextSegment seg in fragment.Segments)
                        sb.Append(seg.Text);
                    Console.Write("{sb.ToString()}|");
                }
            }
            Console.WriteLine();
        }
    }
}

แปลงข้อมูลตาราง PDF เป็น CSV ใน C#

เมื่อคุณแยกข้อมูลตารางจาก PDF แล้ว คุณอาจต้องการบันทึกข้อมูลในรูปแบบที่เข้าถึงได้ง่ายกว่า เช่น CSV CSV (Comma Separated Values) ได้รับการรองรับอย่างกว้างขวางโดยแอปพลิเคชันต่างๆ เช่น Microsoft Excel, Google Sheets และระบบประมวลผลข้อมูลอื่นๆ ในส่วนนี้ เราจะแปลงข้อมูลตาราง PDF เป็น CSV ใน C#:

ขั้นตอนต่อไปนี้แสดงวิธีการส่งออกข้อมูลจากตาราง PDF ไปยังรูปแบบ CSV ใน C#:

  • การโหลดเอกสาร PDF: เอกสาร PDF จะถูกโหลดลงในวัตถุเอกสารเหมือนเดิม
  • ExcelSaveOptions: อินสแตนซ์ของ ExcelSaveOptions จะถูกสร้างขึ้นโดยใช้รูปแบบ CSV วิธีนี้จะช่วยให้มั่นใจว่าข้อมูลตารางจาก PDF จะถูกส่งออกเป็นไฟล์ CSV โดยตรง
  • การบันทึกไฟล์ CSV: เรียกใช้วิธีการบันทึกเพื่อส่งออกข้อมูลตาราง PDF ไปยังไฟล์ .csv

ตัวอย่างโค้ดด้านล่างนี้แสดงวิธีการแปลงตาราง PDF เป็นรูปแบบ CSV ใน C#:

// โหลดเอกสาร PDF
Document pdfDocument = new Document("input.pdf");

// สร้างอินสแตนซ์ของวัตถุตัวเลือก ExcelSave
ExcelSaveOptions excelSave = new ExcelSaveOptions { Format = ExcelSaveOptions.ExcelFormat.CSV };

// บันทึกผลลัพธ์ในรูปแบบ XLS
pdfDocument.Save("PDFToXLS_out.xlsx", excelSave);

รับใบอนุญาตฟรี

คุณสามารถรับ ใบอนุญาตชั่วคราวฟรี เพื่อทดสอบฟีเจอร์ต่างๆ ของ API ได้โดยไม่มีข้อจำกัดในการประเมินใดๆ

สรุป

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

ดูเพิ่มเติม