Thứ Sáu, 4 tháng 2, 2011

PDF to XML

Trích rút dữ liệu bằng xml.

làm sao lấy được dữ liệu từ file pdf.

Xml đã trở thành một công cụ mạnh mẽ, bằng chứng là các đại gia trong giới phần mềm đã tích hợp xml vào những phần mềm của mình, xml được dùng để liên lạc, lưu trữ giữa các chương trình. Xml đã trở thành chuẩn để trao đổi dữ liệu trong môi trường web.

Khi bạn đi hát karaoke, người ta thường cho bạn một cuốn sách rất dày đúng hong nè, bạn tra nó như là cún từ điển, liệu có cách nào tra cho nhanh hong! dùng di động của bạn á, sau khoảng vài giây

Bạn hãy đặt câu hỏi là “dữ liệu bài hát đâu?”, lấy ở đâu, làm sao để lấy. Trên website của công ty thường cho bạn những file như là html, xsl, pdf hay tệ hơn nữa là file ảnh (bó chíu). Ở đây là một file PDF (khóc rùi), không lẽ ngồi ngõ lại sao?!.

Không!

Hãy dùng xml để trích rút.

== Mục tiêu: chuyễn dữ liệu danh sách bài hát từ file pdf thành xml có cấu trúc

đây là file list nhạc mới nhất gồm vol1 tới vol39 mình vừa tải trên trang chính của công ty. Rất hot đúng hong nà. ^^

source

H1> dữ liệu nguồn, 1 file pdf

afterconnverttogridview

H2> thành quả

== Thực hiện

Căn bản là bạn sử dụng công cụ chuyển từ PDF thành xml rồi sau đó lập trình hoặc sự dụng xslt để chuyển thành file xml có cấu trúc bạn soạn thảo ra.

Ở đây mình làm theo một hướng là PDF-> HTML –> XML –>(chương trình trích rút) –> File xml có cấu trúc mong đợi.

Lét’s nha!

= Đầu tiên mình dùng công cụ SomePDF to Html Converter để chuyển từ pdf sang xml.

Ở phần Output Option các bạn chú ý: trích xuất ra tất cả ra 1 trang, chỉ xuất phần nội dung. Các bạn chọn cho đúng nha, việc này để dễ hơn cho quá trình tiếp theo thôi.

pdf2html

H3> PDF=>HTML

Đây là kết quả sau khi convert sang html

Nội dung không hiển thị được tiếng việt, do được mã hóa theo bảng mã VNI-TIMES, do đó công đoạn tiếp theo phải làm theo chuyện là chuyển về bảng mã Unicode

htmlcode

H4> Kết quả trích rút

htmloutput

H5> Hiện thị nội dung của đoạn html vừa chuyển thành

đây là công đoạn chuyển html thành xml sử dụng notepad++

saveintoxml

H6> chuyển qua xml

Chuyển qua bảng mã Unicode bằng phần mềm Unikey

convert2unicode

H6> Chuyển bảng mã thành Unicode

Ồ! đã hiển thị được tiếng việt.

Đã có tập tin xml rùi, đơn giản he ^^. Đúng là ta đang có một file xml nhưng nhìn xem nó là một đống hổn loạn các thẻ, các thuộc tính, các định nghĩa css, dữ liệu mà ta xem là rác. Những các tên bài hát thì rời rạc từng dòng! Sad smile

Tưởng chừng như là ta phải dừng lại ở đây, nhưng cố gắng nhìn kĩ một xíu nha.

xíu nữa ….

ra chưa ?!

Bạn nhìn lại file pdf trên đầu bài viết! bạn thấy nó hiển thị có cấu trúc đúng ko?

Chúng hiển thị theo các bảng, tên tiêu đề được định dạng khác, dữ liệu (tên bài hát, mã bài hát, lời bài hát, tác giả) tất cả thông tin này được hiển thị một cách đều đặn có định dạnh chuẩn chung từ kiểu chữ, font chữ, cở chữ màu sắc.

Do đó khi chuyển ra chúng vẫn mang hơi hướng của việc định chuẩn chung thông tin (mình nói trừu tượng cho zui, tuy là khó hiểu) =.=

Bây giờ bạn nhìn file xml xem

Có gì khác không?

bạn xem cái thuộc tính class trong thẻ vid, nó đó

file css định nghĩa cách hiển thị

trong file này thì cái định danh cho hiển thị này nằm trong thuộc tính class.

và đây cũng là chìa khóa

bạn dùng nó để giải mã file pdf Open-mouthed smile

Thử xem nè:

class “ft4” là mã bài hát

class “ft5” là thông tin tên bài hát

class “ft6” là lời bài hát

“ft3” là tên tác giả

Tới đây thì mình nghĩ bạn đã hiểu bản chất vấn đề. Không có gì khó ở đây cả, vấn đề là bạn tinh tường một chút thôi, nhìn kĩ. Lúc đầu mình cũng tưởng chường như đã đầu hàng, nhưng rồi một tia sét ! mình nhận ra là cuộc đời này vẫn đẹp! (relax chút)

afterconvert

H7> Nhìn kĩ, chút để ngộ ra

Chắc có lẽ bạn đã nắm được vấn đề.

Việc còn lại là bạn code vài dòng để trích ruốt, vài câu lệnh if, dùng .Net + using System.Xml là oke

finalresult

H8> Xml có cấu trúc mong muốn

Khi đã có file xml có cấu trúc mong đợi bạn hoàn toàn có thể chuyển nó tới một định dạng bất kỳ mà mình mong muốn ví dụ như file access, excel, sql, word.

afterconnverttogridview

H9> Lên dĩa …

== Kết bài: Điều cuối cùng mình muốn nói ở đây mình không chỉ bạn cách để chuyển từ file pdf sang file xml có cấu trúc mong muốn, mà là tư tưởng. Với nó bạn có thể làm được nhiều thứ hơn là bạn nghĩ. Chẳng hạn như có một trang web (html) cung cấp thông tin giá cả thị trường, bạn hoàn toàn có thể chuyển nó về thành dữ liệu của mình

Không có nhận xét nào:

Đăng nhận xét