Scriptdd.com

บทความบ้าบ่นของคนทำเว็บ ปี 8

แนวทางการค้นหาคำใน file เอกสารผ่านระบบ web

หัวข้อ บทความ แทก How to | MySQL | Perl | PHP

อาทิตย์ที่แล้วทำบทความ แปลง pdf เป็น png ไป สมาชิกหลายๆท่านทำบ่นว่า พี่อ้ำ เล่นง่ายนี่หว่า 
เดี๋ยวนี้ เขียนบทความ หลอกเด็กอยู่เรื่อย กรรมเวง ก็ลูกค้าเค้ามีโจทย์มาอย่างนี้นี่หว่าเอ้า 
ไหนๆก็อุตสาห์บ่นๆบ่นมาแล้ว อาทิตย์นี้เรามาเล่นกันหน่อยดีกว่า กับบทความนี้ดีกว่า


Google มานทำได้ไงวะ หาคำใน pdf file



ใครที่เคยๆ search คำอะไรแปลกๆ อาจจะเคยเห็นว่า Google มันสามารถเข้าไปหาคำที่อยู่ใน เอกสาร pdf หรือ word , powerpoint ได้
แล้วเคย งงๆ ไหม มานทำได้ไงวะ ??

จะว่าไป project นี้น่าจะเพียงพอสำหรับการนำไปทำ project จบปริญญาตรีได้เลย ^^ พอดีมีเด็กๆ mail มาถามเหมือนกันว่า
ทำได้ไหมถ้าต้องการค้นหาคำ ในเอกสารต่างๆ

ตอนนั้นตอบไปว่า ไม่ได้หรอกครับ แต่ตอนนี้ อิอิ มาสิ มาอ่านกัน


เอาแนวคิดกันก่อน


แนวคิดในการทำระบบค้นหานี่ ผมขอสมมุติโจทย์ ว่า อาจารย์ในภาควิชา ต้องการนำ file เอกสารเดิมที่มีทั้ง

powerpoint (เป็นเอกสาร การ present ต่างๆ(
word (เอกสารพวกรายงานตามหัวข้อต่างๆ รวมทั้งรายงานที่ให้นักศึกษาทำส่ง)
pdf (พวก manual เครื่องมือ อุปกรณ์ต่างๆ datasheet ของเบอร์อุปกรณ์อิเล็กทรอนิกส์)

มาทำระบบค้นหาผ่าน Web โดยให้นึกศึกษาสามารถระบบคำที่ต้องการค้นหา แล้วระบบจะเข้าไปหาคำดังกล่าว
ใน file ที่อยู่ใน ฐานข้อมูล


นี่คือโจทย์ครับ คิดว่า ส่วนใหญ่แล้วก็ต้องการใช้แบบนี้แน่นอน :P เราลองมาดูกันว่า เราจะทำอย่างไรได้บ้าง
ฐานข้อมูล หากเราคิดว่าจะใช้ MySQL เราก็ควรใช้ function การค้นหาคำใน ตาราง

ก็พวก Select * table where และเงื่อนไขนั้นแหละ ปัญหาก็คือเราจะหาวิธียังไงให้เอาคำใน file มาใส่ใน ฐานข้อมูล

เราจะต้องทำการ แปลง file เอกสารต่างๆ ออกมาอยู่ในรูปแบบของ Text แล้วนำ Text ดังกล่าวไปใส่ในฐานข้อมูล

ถ้าได้ตามนี้แล้ว เราก็สามารถใช้ MySQL เข้าไปค้นหาได้นี่เป็นหลักการและแนวคิดที่สามารถทำได้จริงๆแหละ ^^


Microsoft Word เป็น Text

อันนี้ไม่พูดมากเพราะพูดไปแล้ว ฮ่าไปอ่านกันเองครับ :P
MSWord -> Text file ด้วย Perl + PHP Script


Microsoft Excel & Microsoft PowerPoint เป็น Text

อันนี้พูดเหมารวมไปเลย เพราะเป็น Tool ในการแปลงตัวเดียวกัน ฮ่าคือ xlhtml ครับ

http://chicago.sourceforge.net/xlhtml/




xlhtml เป็น Project ที่ sourceforge ที่มีเป้าหมายในการแปลงเอกสาร Office เป็น html ครับเราสามารถนำมาประยุกต์ใช้งานได้ ^^
เริ่มแรก จับมันมา Install กันก่อนสำหรับท่านที่ต้องการใช้บน Server จริงๆ กรุณาติดต่อให้ Admin ของท่านลงให้นะครับ
สำหรับการทดลองนี่เอาว่าเราจะลง บน windows ละกัน ก็เลือก Binarys และเลือก windows เพื่อลงได้เลยครับ

http://chicago.sourceforge.net/xlhtml/binarys.html




แตก zip ออกมาก็มีแค่นี้แหละ


การใช้งานผมลองสร้าง excel ขึ้นมาชื่อ excel.xls



เวลาเรียกใช้ก็เข้าไปที่ command line เรียกว่า



ก็พื้นๆ ครับมันจะแปลง excel.xls มาเป็น excel.html ให้ แค่นั้นเอง มาดูผลดีกว่า


ข้อมูลที่กดแปลงมาเป็น html แล้ว ฮี้ๆ เหมือนต้นฉบับเลย

มาดูเรื่อง Powerpoint กันต่อครับ อ้อ มาพิสูจน์เรื่องภาษาไทยกันด้วย เพราะ Tool แปลงเอกสาร
พวกนี้ มักมีปัญหากับ ภาษาไทย :P




ต้นฉบับ powerpoint ครับมีภาษาไทยด้วย มา มาพิสูจน์กัน



กดแปลงแล้วลองเปิด html ดู



อ่ะจ๊าก อ่านไม่ออก !!!! ฮ่าลองเปลี่ยน Encoding ของ Browser เป็น UTF-8 สิครับ



เรียบร้อยแม้ว่า สี font ต่างๆจะไม่มีแต่ประเด็นของเราคือ เราต้องการ Text มากกว่า ^^ ถือว่า ผ่านครับ


พวก Tool แปลงเป็น Text เหล่านี้ ส่วนใหญ่จะแกะ Text ออกมาใช้รูป Unicode ครับยิ่งภาษาไทยด้วยแล้วละก็
ถ้าเราเอาไปทำระบบค้นหา ก่อนจะ Add ลงฐานข้อมูลก็แค่แปลงมันก่อนแค่นั้นเองครับอาจจะใช้ Sub แปลง

ที่ผมเขียนไว้ใน บทความ word 2 text ก็ได้ (เรื่องเก่าไม่ขอโม้ครับถือว่า มีความรู้กันอยู่แล้ว ^^)


pdf เป็น TextTool ตัวนี้พยายามหาแต่แรกแล้ว แหะๆ เพิ่งเจอเลยเอามาโม้ตอนท้าย

http://www.foolabs.com/xpdf/home.html



ฮี้ๆ ของฟรี ดีๆ อีกแล้วรายละเอียดอ่านเองเราเป้าหมาย เอามันมาแปลงเป็น Text ฮี้ๆ เลือก download
เหมือนเดิมครับ เราก็เลือก Win32 ซะ



Unzip ออกมา ผมเอาไปวางไว้ที่ xpdf ละกัน

การติดตั้ง ให้เราเปิด sample-xpdfrc ขึ้นมาด้วย editplus ก็ได้ครับ แก้บรรทัด ที่ว่า

#textEncoding UTF-8

เอา mart ออกเป็น

textEncoding UTF-8



เอา mart ออกนะครับเพื่อระบุว่าเอกสารทั้งหมดที่แปลงออกมาเป็น UTF-8 แล้วทำการ Save กลับเป็น xpdfrc (ไม่ต้องมีนามสกุล file นะครับ)
file นี้เป็นเหมือน file config ของ program ทุกครั้งที่เราทำการเรียก program มันจะวิ่งมาหา xpdfrc file นี้ก่อนทุกครั้ง ^^



เอกสารต้นฉบับที่จะทำการแกะ text ออกมา



ผมขอระบุข้อมูลออกมาแบบ html ละกันครับ (อ่านเพิ่มเติมกันเอาเองละกันใน readme)





เหมือนเดิมข้อมูลที่ได้จะออกมาเป็น UTF-8 ถ้ากำหนดใน browser ใหม่ก็จะสามารถอ่านได้ ^^


มาสรุปวิธีการพัฒนากันในภาพรวม

จากที่ผมได้โม้เรื่อง Tool แปลงเป็น Text มาแล้วสรุปหลักการทำระบบค้นหาข้อมูลใน file ได้ดังนี้

1. Admin ทำการ Upload file ดังกล่าวเข้า Server ผ่าน script upload ด้วย perl , php ก็ตามสะดวก

2. script ทำการ นำ file ไปจัดเก็บ อาจจะเป็น /file-upload/pdf อะไรก็ว่าไป

3. script ทำงานต่อ โดยเอา file ที่ upload มาอยู่ใน Server แล้วนั่นแกะเอา Text ออกมา
งานนี้ก็พึ่งคำสั่ง system(); นั้นแหละครับทั้ง perl php เลยเพื่อไปเรียก program แปลง text ต่างๆ

4. ได้ Text แกะออกมาแล้วนั่น นำไป จัดเก็บลง ฐานข้อมูลไว้ ฉะนั้นฐานข้อมูลของเราก็จะมี text ที่แกะแล้วกับชื่อ file เอกสารนั้นๆ

5. ในด้านการค้นหาทางฝั่ง user ก็เข้ามา ก็แค่ทำ script ค้นหา ธรรมดาๆ ใน ฐานข้อมูลเท่านั้นเอง


ที่ผมโม้ๆมาจะว่า ง่ายก็ง่ายจะว่ายาก ก็ไม่ยากมาก เพราะเราไม่ได้เป็นคนพัฒนา Tool ที่ใช้แปลง Text เอง
Project ถ้าถามว่าเหมาะสมกับการนำไปเป็น Project จบปริญญาตรี ของน้องๆ นักศึกษาไหม

ผมว่า คงต้องเอาหลักการนี้ไปพัฒนาต่อยอดให้มี ลูกเล่นและ Function เพิ่มขึ้น ลองไปคิดพัฒนาระบบฐานข้อมูลห้องสมุดดู
ผมว่าน่าจะดี บทความนี้หวังว่าจะช่วยให้หลายๆท่านได้ไอเดียในการ จัดการข้อมูลนะครับ ฮ่า ^^

รูปคุณ Read (13,723) Comments (13) 2004-03-19 21:30:18

ความคิดเห็น

น้อง Rokoman ส่ง mail มาให้เรื่องการใช้ xpdf ครับ

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

ลืมอธิบาย

textEncoding UTF-8 ตรงนี้เราสามารถเปลี่ยนเป็น TIS-620 ได้ก็ทำให้แปลงออกมาได้เป็นไทย
นะคร้าบ แต่ยังไม่ค่อยดีเท่าไหรนะคร้าบเท่าที่ผมคิดอะ แต่ถ้าตรง #textEncoding UTF-8 ปิดไว้
ก็สามารถใช้ command ได้ แต่ต้อง config ในไฟล์ แบบด้านล่างของไฟล์ที่ส่งไปให้นะคร้าบ
และก็ใช้ command ดังนี้

pdttotext -htmlmeta -enc TIS-620 ชื่อไฟล์.pdf

ไปละคร้าบ ขอให้ที่พี่สุขภาพแข็งแรงนะคร้าบ แล้วจะมากวนอีก


จริงๆ พี่ก็พยายามจะทำนั้นแหละฮ่า
http://www.foolabs.com/xpdf/download.html

ดูล่างๆจะเห็นว่า มี
Thai: xpdf-thai.tar.gz (1873 bytes)

คือเห็นแล้วละว่ามันมี TIS-620 Map เอาไว้ช่วยแปลง
แต่พยายาม config แล้วล่ะครับ ^^ มันทำยังไงก้อไม่แปลงให้

ก็เลยเอาวะเป็น UTF ก่อนก็ได้แล้วค่อยแปลงกลับอีกที

member ท่านใดมีความเห็นแตกต่างในวิธีทำก็ลองเสนอมาครับ ^^

รูปคุณ 9AuM โดยคุณ 9AuM 2007-04-12 14:25:11


http://www.servdd.com Web Hosting คุณภาพบริหารงานโดยนายอ้ำ
http://www.wp4seo.com wp4SEO ระบบช่วยบริหาร Wordpress Blog จำนวนมาก
http://www.welovetopup.com weLoveTopup เติมเงินออนไลน์ให้ส่วนลดมากที่สุดในตลาด

OK ได้แล้ว ^^ โป้ sixhead แนะนำมาพอดี

ให้เรา download TIS-620 MAP มาจาก

ftp://ftp.foolabs.com/pub/xpdf/xpdf-thai.tar.gz

แล้ว untar ไปไว้ที่เดียวกับ program เช่น ผมวางไว้ที่

C:\Downloads\xpdf-3.00-win32\xpdf-3.00-win32

เสร็จแล้วให้เปิด file sample-xpdfrc ขึ้นมา
ไม่ต้องไปยุ่งอะไรเลยนะครับ

เพิ่มบรรทัดล่างไปว่า

#----- begin Thai support package (2002-jan-16)

nameToUnicode C:/Downloads/xpdf-3.00-win32/xpdf-3.00-win32/Thai.nameToUnicode

unicodeMap TIS-620 C:/Downloads/xpdf-3.00-win32/xpdf-3.00-win32/TIS-620.unicodeMap

#----- end Thai support package


แก้ไข path ให้ตรงตามที่คุณจัดเก็บ file ไว้

เสร็จแล้ว save file นี้เป็น xpdfrc เรียบร้อยแล้วก็สามารถใช้คำสั่ง

pdftotext -htmlmeta -enc TIS-620 ชื่อไฟล์.pdf

แบบที่น้อง Rokoman กล่าวมาได้เลย เย้ ^^

รูปคุณ 9AuM โดยคุณ 9AuM 2007-04-12 14:25:24


http://www.servdd.com Web Hosting คุณภาพบริหารงานโดยนายอ้ำ
http://www.wp4seo.com wp4SEO ระบบช่วยบริหาร Wordpress Blog จำนวนมาก
http://www.welovetopup.com weLoveTopup เติมเงินออนไลน์ให้ส่วนลดมากที่สุดในตลาด

แล้ว server ที่ เป็น linux ละครับ มีวิธีแปลงไฟล์ .doc ให้เป็น xml หรือป่าวครับ

รูปคุณ ontjung โดยคุณ ontjung 2007-12-17 13:44:20

ผมสนจัยที่จะทำตัวนี้มากเลยคับ แต่ผมยังไม่ค่อยรู้อะไรมาก ไม่ทราบว่าผมจะติดต่อกับพี่ได้ยังไงคับ

รูปคุณ Rin โดยคุณ Rin 2007-12-18 16:39:02

แล้ว google มันเอาไฟล์ของคนอื่นไปแปลงตอนไหนวเลาเราคนหานะ

รูปคุณ ทำเว็บ โดยคุณ ทำเว็บ 2008-01-30 16:06:26

ตอบคุณ ทำเว็บ

ลองชมคลิปรายการบันทึกโลก ตอน Google ดูครับ

http://www.songburi.com/blog/2007/06/14/world_of_google.html

ดูไปเรื่อยๆจะเข้าใจการทำงานของ Google ครับ

รูปคุณ 9AuM โดยคุณ 9AuM 2008-01-30 16:48:30


http://www.servdd.com Web Hosting คุณภาพบริหารงานโดยนายอ้ำ
http://www.wp4seo.com wp4SEO ระบบช่วยบริหาร Wordpress Blog จำนวนมาก
http://www.welovetopup.com weLoveTopup เติมเงินออนไลน์ให้ส่วนลดมากที่สุดในตลาด

ผมลองอ่านดูแล้ว ดีมากๆเลยครับ
เขียนเข้าใจง่ายดีครับ

ที่ผมเรียนอยู่ ในวิชาอัลกอลิทึม อาจารย์ได้สั่งโปรเจ็คแนวนี้เลยครับ
อาจารย์เค้าจะให้ไฟล์ .txt มาเป็นหมื่นๆไฟล์เลย ให้เราเขียน Search Engine ขึ้นมาโดยห้ามใช้ฐานข้อมูลเด็ดขาด ผลของการค้นหาที่ต้องแสดงคือ หัวข้อที่พบและลิงค์ไปยังไฟล์นั้นๆ แสดงรายละเอียดของเนื้อหาโดยย่อ แสดงคีย์เวิร์ดที่ใกล้เคียง 5 คำ
ให้เขียนโดยภาษาจาวา หรือ ASP เท่านั้นครับ
พอจะมีแนวทางมั้ยครับ

รูปคุณ โดม โดยคุณ โดม 2008-06-26 03:30:52

คุณ 9AuM คะ
ลองใช้งาน Xpdf ดูแล้วติดปัญหา คือ เมื่อไฟล์ที่แปลงออกมาได้แล้วภาษาไทย ที่เป็น ไม้เอก โท ตรี กลายเป็นสี่เหลี่ยม แสดงผลออกมาไม่ได้ค่ะ(ทำเป็น UTF-8) ลองแก้ไขหลายวิธิแล้วก็ไม่หายค่ะ มันจะเกี่ยวข้องกับ font เอกสาร PDF ที่นำมาทำหรือเปล่าคะ หรือว่ามีวิธีแก้ยังไงได้บ้างคะ ช่วยตอบผ่านทาง Email ก็ได้ค่ะ เพราะไม่ค่อยได้เข้ามาเช็คบ่อยๆ
ขอบคุณล่วงหน้าค่ะ

รูปคุณ ATOM โดยคุณ ATOM 2008-07-06 17:17:31

อืม ลืมบอก E-mail คะ [email protected]
รอความหวังอยู่นะคะ

รูปคุณ ATOM โดยคุณ ATOM 2008-07-07 22:26:40

ขอบคุณมากๆครับ

ตอนนี้ผมสามารถทำอินเด๊กซ์เอกสารสำหรับองค์กรได้หมดแล้วครับ

รูปคุณ กว่าง โดยคุณ กว่าง 2009-03-12 12:14:25

ผมลองใช้ xpdf กับ sphider search engine แล้ว (download จาก hotscripts.com)
รวมทั้งได้ลง TIS-620 MAP ตามวิธีที่ผู้ใจดีบอกมาด้วย ซึ่งตอนทดสอบจาก command promt นั้นก็ได้ผลลัพธ์ดีอยู่หรอก แต่พอทดสอบกับ sphider ปรากฎว่ามันหา TIS-620 MAP ไม่เจอซะงั้น
รบกวนผู้รู้ตอบอีกครั้งนะครับ เพราะถ้า encode ด้วย UTF-8 แล้วจะมีปัญหาในกา่รอ่านวรรณยุกต์ การันต์ และพวกสระลอยต่างๆ อ่ะครับ ขอบคุณล่วงหน้านะครับ

รูปคุณ php_master โดยคุณ php_master 2009-06-26 08:32:16

รู้แล้ว
ต้องงี้ ต้องใช้ \ ครับ ไม่ใช่ / ไม่งั้นหาอะไรก็ไม่เจอ อิอิ

#----- begin Thai support package (2002-jan-16)

nameToUnicode C:\Downloads\xpdf-3.00-win32\xpdf-3.00-win32\Thai.nameToUnicode

unicodeMap TIS-620 C:\Downloads\xpdf-3.00-win32\xpdf-3.00-win32\TIS-620.unicodeMap

#----- end Thai support package

เรียบร้อย แค่นี้ก็ค้นกับ sphider serch engine ได้แล้ว (แบบฟรีด้วย อิอิ)

รูปคุณ php_master โดยคุณ php_master 2009-06-30 09:47:10

สวัสดีค่ะ อาจจะไม่เกี่ยวโดยตรงกับเรื่อง เท่าไหร่ แต่พอดีเห็นว่ามีผู้รู้ sphider พอดีตอนนี้กำลังทำ search engine ให้กับ intranet หน่วยงานค่ะ แล้วก็ลองใช้เจ้า sphider นี่แหละ ตอนนี้ปัญหาคือ ลองบนเครื่อง ตัวเอง สามารถ search คำภาษาไทยได้ แต่พอเอาไป รันบน server ไม่สามารถ search ภาษาไทยได้เลยค่ะ ได้แต่ภาษาอังกฤษและตัวเลขเท่านั้น

รบกวนผู้รู้ช่วยตอบหน่อยนะคะ
ขอบคุณค่ะ

รูปคุณ bo โดยคุณ bo 2009-06-30 15:25:53

ร่วมแสดงความคิดเห็น



ขอความกรุณา ปัญญาชน ทุกๆท่าน รณรงค์การใช้ภาษาไทยให้ถูกต้อง
กรุณา ลงความคิดเห็นโดยใช้ภาษาไทยให้เป็นภาษาไทย งดการใช้ภาษาวัยรุ่น,
แอ๊บแบ๊ว บอกตรงๆปัญญาอ่อน !! Admin นั่งอ่านแล้วปวดหัว

เข้าระบบ


จำไว้ด้วยนะจ้ะ

สมัครสมาชิก
ลืมรหัสผ่าน

บทความล่าสุด

Gallery

Tags

SMS CSS bicycle ROM Developer FTR ล้อหมอบ Apache Perl Mobile API Phantom เฟรม OEM เฟรมเสือหมอบ Diary MySQL JavaScript PHP Downloads DOM Windows Review Google Gallery Hardware Mozilla Microsoft Notebook Honda จักรยาน Music

อื่นๆ ...

เพื่อนบ้าน

สถิติส่วนตัว

คลิกรับ Feed สิจ๊ะ

TwitterCounter for @9aum

Scriptdd.com | ctdd Version 3.0 ติดต่อฐานข้อมูลทิ้งสิ้น 6 ครั้งใช้เวลาประมวลผล 0.0562 วินาที
โปรแกรมโดย 9AuM | ออกแบบโดย styleshout