นี่คือบล็อกทางเทคนิคที่เกี่ยวข้องกับการจดจำภาพเทคโนโลยี OCR การเรียนรู้ของเครื่องและการสร้างเครื่องมือค้นหาอย่างง่าย เป็นที่ที่ฉันบันทึกผลการวิจัยและประสบการณ์ทุกวันในขณะที่ทำโครงการสำเร็จการศึกษา
เทคโนโลยี OCR (การจดจำอักขระออพติคอล) หมายถึงกระบวนการที่อุปกรณ์อิเล็กทรอนิกส์ (เช่นสแกนเนอร์หรือกล้องดิจิตอล) ตรวจสอบอักขระที่พิมพ์บนกระดาษกำหนดรูปร่างของพวกเขาโดยการตรวจจับรูปแบบที่มืดและสว่างจากนั้นแปลรูปร่างเป็นข้อความคอมพิวเตอร์โดยใช้วิธีการจดจำอักขระ
เครื่องยนต์ OCR ของ Tesseract ได้รับการพัฒนาเป็นครั้งแรกโดย HP Labs ในปี 1985 และในปี 1995 มันได้กลายเป็นหนึ่งในสามเครื่องมือประจำตัวที่แม่นยำที่สุดในอุตสาหกรรม OCR อย่างไรก็ตามในไม่ช้า HP ก็ตัดสินใจที่จะเลิกธุรกิจ OCR และ Tesseract ก็ถูกเก็บไว้อย่างไร้ประโยชน์ หลายปีต่อมา HP ตระหนักว่าแทนที่จะวาง Tesseract บนหิ้งมันจะดีกว่าที่จะมีส่วนร่วมในอุตสาหกรรมซอฟต์แวร์โอเพ่นซอร์สและฟื้นฟูมัน - ในปี 2005 Tesseract ได้รับจากสถาบันเทคโนโลยีสารสนเทศเนวาดาในสหรัฐอเมริกาและพยายามปรับปรุงบั๊ก Tesseract ได้รับการปล่อยตัวเป็นโครงการโอเพ่นซอร์สใน Google Project และเวอร์ชันล่าสุด 3.0 ล่าสุดรองรับ OCR จีนแล้ว
ในพื้นหลังเทคโนโลยีที่เป็นผู้ใหญ่ฉันต้องการใช้เทคโนโลยี OCR นี้และรวมเข้ากับเทคโนโลยีการพัฒนาอินเทอร์เน็ตบนมือถือและเทคโนโลยีการดึงข้อมูลที่เป็นที่นิยมในปัจจุบันเพื่อให้ตระหนักถึงเครื่องมือค้นหาเว็บบนมือถือที่สามารถระบุตัวละครจีนในภาพได้สำเร็จ
ด้วยการพัฒนาอินเทอร์เน็ตอย่างรวดเร็วและการมาถึงของข้อมูลขนาดใหญ่ผู้คนจะต้องพึ่งพาข้อมูลและข้อมูลมากขึ้นเรื่อย ๆ อย่างไรก็ตามข้อมูลอินเทอร์เน็ตของวันนี้มีขนาดใหญ่มากและมีปัญหาอย่างมากกับความถูกต้องของข้อมูลและการจำแนกข้อมูลที่สมเหตุสมผล ในมุมมองของสถานการณ์นี้ผู้คนจำนวนมากขึ้นหวังว่าจะหาวิธีที่สะดวกยิ่งขึ้นในการรับข้อมูลที่ถูกต้องในการทำงานประจำวันและชีวิตและหาวิธีในการค้นหาข้อมูลที่พวกเขากำลังมองหาได้อย่างมีประสิทธิภาพมากขึ้น ในเวลาเดียวกันด้วยความนิยมของสมาร์ทโฟนผู้คนจำนวนมากขึ้นจะคุ้นเคยกับการใช้วิธีการที่มีประสิทธิภาพมากเช่นการถ่ายภาพเพื่อแทนที่วิธีการคัดลอกและการพิมพ์ก่อนหน้านี้เพื่อบันทึกข้อมูลที่ต้องบันทึกในชีวิตและการทำงาน แรงบันดาลใจจากสิ่งนี้ฉันต้องการใช้เทคโนโลยี OCR (การจดจำตัวละครแบบออพติคอล) ที่เป็นผู้ใหญ่มากขึ้นในปัจจุบันรวมถึงเทคโนโลยีการพัฒนาอินเทอร์เน็ตที่เป็นที่นิยมในปัจจุบันและเทคโนโลยีการดึงข้อมูลเพื่อตระหนักถึงเครื่องมือค้นหาเว็บที่สามารถรับรู้แบบอักษรภาษาภาพได้สำเร็จ มันมีจุดมุ่งหมายที่จะค้นหาเพื่อนจากรูปภาพได้เร็วขึ้นและแม่นยำด้วยวิธีการที่สะดวกเช่นการถ่ายภาพและภาพหน้าจอ
สถาปัตยกรรมแบ็กเอนด์ส่วนใหญ่แบ่งออกเป็นสามโมดูลหลัก: โมดูล OCR, โมดูลเครื่องมือค้นหาและโมดูลมิดเดิลแวร์ข้อความ PHP
``` shell
brew install tesseract
```
```shell
sudo xcodebuild -license
...
agree
```
``` shell
brew install tesseract
```
```shell
Usage:tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]
pagesegmode values are:
0 = Orientation and script detection (OSD) only.
1 = Automatic page segmentation with OSD.
2 = Automatic page segmentation, but no OSD, or OCR
3 = Fully automatic page segmentation, but no OSD. (Default)
4 = Assume a single column of text of variable sizes.
5 = Assume a single uniform block of vertically aligned text.
6 = Assume a single uniform block of text.
7 = Treat the image as a single text line.
8 = Treat the image as a single word.
9 = Treat the image as a single word in a circle.
10 = Treat the image as a single character.
-l lang and/or -psm pagesegmode must occur before anyconfigfile.
```
ใน:
tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...] ระบุ tesseract 图片名输出文件名-l 字库文件-psm pagesegmode 配置文件
ตัวอย่างเช่น: tesseract code.jpg result -l chi_sim -psm 7 nobatch
-l chi_sim หมายถึงการใช้ไลบรารีฟอนต์ภาษาจีนแบบง่าย (คุณต้องดาวน์โหลดไฟล์ไลบรารีฟอนต์ภาษาจีนคลายการบีบอัดและเก็บไว้ในไดเรกทอรี tessdata ส่วนขยายไฟล์ตัว chi_sim.traineddata คือ .raineddata-psm 7 หมายถึงการบอก code.jpg tesseract.jpg ว่าภาพเป็นบรรทัดของข้อความ พารามิเตอร์นี้สามารถลดอัตราความผิดพลาดในการรับรู้ ค่าเริ่มต้นคือ 3** การทดสอบแบบอักษรภาษาอังกฤษ: **
** การทดสอบแบบอักษรจีน: **
ตอนนี้มาสร้างห้องสมุดภาษาแบบอักษรและการฝึกอบรมข้อมูลตัวอย่างภาษาแบบอักษร
**font_properties (new in 3.01)**
A new requirement for training in 3.01 is a font_properties file. The purpose of this file is to provide font style information that will appear in the output when the font is recognized. The font_properties file is a text file specified by the -F filename option to mftraining.
Each line of the font_properties file is formatted as follows:
<fontname> <italic> <bold> <fixed> <serif> <fraktur>
where <fontname> is a string naming the font (no spaces allowed!), and <italic>, <bold>, <fixed>, <serif> and <fraktur> are all simple 0 or 1 flags indicating whether the font has the named property.
When running mftraining, each .tr filename must match an entry in the font_properties file, or mftraining will abort. At some point, possibly before the release of 3.01, this matching requirement is likely to shift to the font name in the .tr file itself. The name of the .tr file may be either fontname.tr or [lang].[fontname].exp[num].tr.
**Example:**
font_properties file:
timesitalic 1 0 0 1 0
shapeclustering -F font_properties -U unicharset eng.timesitalic.exp0.tr
mftraining -F font_properties -U unicharset -O eng.unicharset eng.timesitalic.exp0.tr
Note that in 3.03, there is a default font_properties file, that covers 3000 fonts (not necessarily accurately) in training/langdata/font_properties.
**Clustering**
When the character features of all the training pages have been extracted, we need to cluster them to create the prototypes.
The character shape features can be clustered using the shapeclustering, mftraining and cntraining programs:
**shapeclustering (new in 3.02)**
shapeclustering should not be used except for the Indic languages.
shapeclustering -F font_properties -U unicharset lang.fontname.exp0.tr lang.fontname.exp1.tr ...
shapeclustering creates a master shape table by shape clustering and writes it to a file named shapetable.
**mftraining**
mftraining -F font_properties -U unicharset -O lang.unicharset lang.fontname.exp0.tr lang.fontname.exp1.tr ...
The -U file is the unicharset generated by unicharset_extractor above, and lang.unicharset is the output unicharset that will be given to combine_tessdata.
mftraining will output two other data files: inttemp (the shape prototypes) and pffmtable (the number of expected features for each character). In versions 3.00/3.01, a third file called Microfeat is also written by this program, but it is not used. Later versions don't produce this file.
NOTE: mftraining will produce a shapetable file if you didn't run shapeclustering. You must include this shapetable in your traineddata file, whether or not shapeclustering was used.
**cntraining**
cntraining lang.fontname.exp0.tr lang.fontname.exp1.tr ...
This will output the normproto data file (the character normalization sensitivity prototypes).
วิกิทางการ
คำแนะนำของจีน
บน Mac ให้ใช้สปอตไลท์เพื่อเปิดใช้งานเทอร์มินัล
vi /etc/profile
ในเวลานี้กดตัวอักษร I บนแป้นพิมพ์เพื่อเข้าสู่โหมดแก้ไขและป้อนคำสั่งสองบรรทัดต่อไปนี้ด้านล่างเทอร์มินัล:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_77
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
จากนั้นกด ESC เพื่อสิ้นสุดการแก้ไขแล้วป้อน: WQ! การออก
source /etc/profile
java -version
หากข้อมูลเวอร์ชัน Java ปรากฏขึ้นจะพิสูจน์ได้ว่าการติดตั้งนั้นประสบความสำเร็จ!
บทนำ: เมื่อโครงการโค้ดมีขนาดใหญ่ทุกครั้งที่มีการคอมไพล์ใหม่บรรจุการทดสอบ ฯลฯ จะซับซ้อนและซ้ำซ้อนมาก ดังนั้นจึงมีสคริปต์ในภาษา C เพื่อช่วยให้งานเหล่านี้ทำงานเป็นชุด แอพพลิเคชั่นใน Java เป็นแพลตฟอร์มที่ไม่ขึ้นกับแพลตฟอร์มและแน่นอนว่าพวกเขาจะไม่ใช้สคริปต์ที่เกี่ยวข้องกับแพลตฟอร์มเพื่อให้งานชุดเหล่านี้เสร็จสมบูรณ์ Ant เองเป็นเอ็นจิ้นสคริปต์กระบวนการซึ่งใช้ในการทำให้โปรแกรมการโทรดำเนินการโดยอัตโนมัติเพื่อทำการรวบรวมบรรจุภัณฑ์การทดสอบโครงการ ฯลฯ นอกเหนือจากการเป็นแพลตฟอร์มที่ไม่ขึ้นอยู่กับ Java รูปแบบสคริปต์จะขึ้นอยู่กับ XML ซึ่งง่ายต่อการรักษาสคริปต์
การเลือกเวอร์ชัน: Apache-ant -1.9.6-bin.zip
ดาวน์โหลดที่อยู่: เว็บไซต์อย่างเป็นทางการของ Ant
เริ่มการติดตั้ง:
sudo sh
cd /usr/local/
chown YourUserName:staff apache-ant-1.9.6
ln -s apache-ant-1.9.6 ant
vi /etc/profile
ในเวลานี้กดตัวอักษร I บนแป้นพิมพ์เพื่อเข้าสู่โหมดแก้ไขและป้อนคำสั่งสองบรรทัดต่อไปนี้ด้านล่างเทอร์มินัล:
export ANT_HOME=/usr/local/ant
export PATH=${PATH}:${ANT_HOME}/bin
จากนั้นกด ESC เพื่อสิ้นสุดการแก้ไขแล้วป้อน: WQ! การออก
source /etc/profile
ant -version
Apache Ant (TM) เวอร์ชัน 1.9.6 รวบรวมเมื่อปรากฏขึ้น ... จอแสดงผลนี้พิสูจน์ได้ว่าการติดตั้งนั้นสำเร็จ!
บทนำ: ปัจจุบัน Nutch แบ่งออกเป็นสองรุ่นขนาดใหญ่ 1.x และ 2.x Apache พัฒนาอย่างอิสระและรักษาสองรุ่นขนาดใหญ่นี้ ในหมู่พวกเขาความแตกต่างที่ใหญ่ที่สุดระหว่าง 1.x และ 2.x คือ 1.x ขึ้นอยู่กับระบบไฟล์ HDFS ของ Hadoop ในขณะที่ 2.x บทคัดย่อเลเยอร์การจัดเก็บข้อมูลและสามารถบันทึกข้อมูลในฐานข้อมูลเช่น HBase และ MySQL อีกสิ่งสำคัญคือ Nutch ได้รับการปล่อยตัวเป็นเครื่องมือค้นหาที่สมบูรณ์ใน 1.2 และก่อนหน้านี้ ตั้งแต่ 1.3 Nutch เองมีเพียงฟังก์ชั่นการรวบรวมข้อมูลเท่านั้น หากจำเป็นต้องจัดทำดัชนีและค้นหาข้อมูลที่รวบรวมข้อมูลก็จำเป็นต้องใช้เซิร์ฟเวอร์การค้นหาข้อความแบบเต็มรูปแบบของ SOLR เนื่องจากทั้ง Nutch และ Solr ได้รับการพัฒนาขึ้นอยู่กับ Lucene ข้อมูลที่คลานโดย Nutch สามารถจัดทำดัชนีได้อย่างง่ายดายใน SOLR เว็บไซต์ทางการของ Nutch สามารถดาวน์โหลดแพ็คเกจ 1.x ที่รวบรวมได้ แต่ 2.x มีเฉพาะซอร์สโค้ดและจำเป็นต้องรวบรวมด้วยตัวเอง Nutch สร้างขึ้นโดยใช้ ANT หากคุณรวบรวมด้วยตัวคุณเองคุณต้องติดตั้ง ANT เพื่อรวบรวมซอร์สโค้ด เกี่ยวกับวิธีการเลือกเวอร์ชัน Nutch เราพิจารณาปัญหาต่อไปนี้เป็นหลัก: หากคุณต้องการคลานเว็บไซต์จำนวนน้อยและจัดทำดัชนีพวกเขาคุณสามารถใช้ 1.x และ 2.x และคุณสามารถใช้สแตนด์อโลนได้โดยไม่จำเป็นต้องมีการกระจาย แต่ถ้าคุณต้องการรวบรวมข้อมูลเว็บไซต์จำนวนมากหรือแม้กระทั่งการรวบรวมข้อมูลทั้งเว็บมันเป็นการดีที่สุดที่จะเลือก 1.x และใช้การกระจายเนื่องจาก 1.x ขึ้นอยู่กับระบบไฟล์ Hadoop ซึ่งถูกสร้างขึ้นโดยเฉพาะสำหรับการประมวลผลข้อมูลขนาดใหญ่ หากคุณใช้ 2.x เมื่อคลานเว็บไซต์จำนวนมากคุณอาจประสบปัญหาด้านประสิทธิภาพ หากคุณใช้ MySQL เพื่อจัดเก็บข้อมูลประสิทธิภาพจะเป็นฝันร้ายเมื่อข้อมูลหน้าเว็บเกินกว่าหมื่นล้านพันล้าน Nutch1.x เวอร์ชันต่าง ๆ ก็เปลี่ยนไปมากและการดำเนินการของคำสั่งได้ผ่านการเปลี่ยนแปลงครั้งใหญ่ ดังนั้นขอแนะนำให้ผู้เริ่มต้นดาวน์โหลดเวอร์ชัน 1.10 ที่เกี่ยวข้องของบทช่วยสอนนี้ เมื่อคุณคุ้นเคยกับการใช้ Nutch การเปลี่ยนแปลงเหล่านั้นจะไม่ส่งผลกระทบต่อคุณมากนัก Nutch เป็นหนึ่งในผู้รวบรวมข้อมูลโอเพนซอร์สที่ได้รับความนิยมมากที่สุดในปัจจุบันและได้รับการใช้อย่างแพร่หลายโดยองค์กร กลไกปลั๊กอินของ Nutch ช่วยให้นักพัฒนาสามารถปรับแต่งกลยุทธ์การรวบรวมข้อมูลบนเว็บได้อย่างยืดหยุ่น Nutch มีประวัติอันยาวนานและ Hadoop ที่มีชื่อเสียงในวันนี้ได้รับการพัฒนาจาก Nutch Nutch ไม่เพียงทำงานในโหมดสแตนด์อโลน แต่ยังอยู่ในโหมดกระจาย Nutch รองรับการทำงานในสภาพแวดล้อม Linux เท่านั้นดังนั้นจึงสามารถใช้โดยตรงภายใต้ OS X-like Linux
การเลือกเวอร์ชัน: Apache-Nutch -1.10-src.zip
ดาวน์โหลดที่อยู่: เว็บไซต์อย่างเป็นทางการของ Nutch
เริ่มการติดตั้ง:
unzip apache-nutch-1.10-src.zip
cd apache-nutch-1.10
vi conf/nutch-default.xml
ค้นหาแอตทริบิวต์ http.agent.name, คัดลอกไปยัง conf/nutch-site.xml และแก้ไขค่าค่าจะไม่ว่างเปล่า นี่คือการปรับแต่งเป็น: HD Nutch Agent จากนั้นดำเนินการรวบรวมข้อมูลต่อไปคำสั่งจะรายงานข้อผิดพลาด nutch-site.xml ที่แก้ไขแล้วมีดังนี้:
<configuration>
<property>
<name>http.agent.name</name>
<value>myNutch</value>
<description>HTTP 'User-Agent' request header. MUST NOT be empty -
please set this to a single word uniquely related to your organization.
NOTE: You should also check other related properties:
http.robots.agents
http.agent.description
http.agent.url
http.agent.email
http.agent.version
and set their values appropriately.
</description>
</property>
</configuration>
แอตทริบิวต์ http.agent.name ใช้เพื่อทำเครื่องหมายตัวรวบรวมข้อมูลเพื่อให้เว็บไซต์ที่รวบรวมข้อมูลสามารถระบุได้
คุณสมบัติที่กำหนดค่าใน nutch-site.xml จะแทนที่คุณสมบัติเริ่มต้นใน nutch-default ที่นี่เราจะแก้ไขแอตทริบิวต์ http.agent.name เท่านั้นและจะไม่มีการเปลี่ยนแปลงใด ๆ กับผู้อื่น
ณ จุดนี้เราได้กำหนดค่า Nutch แล้วรวบรวมซอร์สโค้ดโดยใช้คำสั่งต่อไปนี้ใน Nutch Home Directory
สลับไปที่ Nutch Home Directory เพื่อดำเนินการ:
ant
กระบวนการรวบรวมครั้งแรกจะใช้เวลานานมากเนื่องจากต้องดาวน์โหลดแพ็คเกจการพึ่งพามากขึ้น เวลาเฉพาะขึ้นอยู่กับสถานการณ์เครือข่ายจริง ใช้เวลา 5-10 นาทีหากเร็วและมากกว่า 20 นาทีถ้าช้า
คำเตือนต่อไปนี้จะถูกรายงานเมื่อเริ่มต้นการรวบรวม:
ไม่สามารถโหลดคำจำกัดความจากทรัพยากร org/sonar/ant/antlib.xml ไม่สามารถพบได้
คำเตือนนี้ไม่ส่งผลกระทบต่อผลการรวบรวมและสามารถละเว้นได้
อาจมีปัญหาเครือข่ายในระหว่างกระบวนการรวบรวม คุณจะต้องใช้คำสั่งต่อไปนี้เพื่อล้างผลการรวบรวมล่าสุด (แพ็คเกจการพึ่งพาที่ดาวน์โหลดแล้วจะไม่ถูกลบ):
ant clean
ในกรณีของเครือข่ายที่ไม่ดีสองขั้นตอนข้างต้นอาจทำซ้ำหลายครั้ง
เมื่อข้อมูลที่คล้ายกันปรากฏขึ้นหมายความว่าการรวบรวมจะสำเร็จ:
สร้างความสำเร็จ
เวลาทั้งหมด: 1 นาที 7 วินาที
ดังที่แสดงในรูปด้านล่าง:
หลังจากรวบรวม Nutch สำเร็จโฟลเดอร์รันไทม์จะถูกสร้างขึ้นในไดเรกทอรีที่บ้าน มันมีสองโฟลเดอร์ย่อยปรับใช้และท้องถิ่น การปรับใช้ใช้สำหรับการรวบรวมข้อมูลแบบกระจายในขณะที่ท้องถิ่นใช้สำหรับการคลานแบบสแตนด์อโลนในท้องถิ่น ส่วนนี้จะอธิบายการใช้การคลานแบบสแตนด์อโลนในท้องถิ่นและการคลานแบบกระจายจะถูกวางไว้ในบทช่วยสอนที่ตามมา
ป้อนโฟลเดอร์ท้องถิ่นแล้วป้อนโฟลเดอร์ BIN มีไฟล์สคริปต์สองไฟล์หนึ่งไฟล์คือ nutch และอีกไฟล์คือการรวบรวมข้อมูล ในหมู่พวกเขา Nutch มีคำสั่งที่จำเป็นทั้งหมดและการรวบรวมข้อมูลส่วนใหญ่จะใช้สำหรับการรวบรวมข้อมูลแบบครบวงจร
ดังที่แสดงในรูปด้านล่าง:
unzip solr-4.10.4.zip
รับโฟลเดอร์ solr-4.10.4 คัดลอกรันไทม์/local/conf/schema-solr4.xml ในไดเรกทอรี nutch ไปยังไดเรกทอรีไฟล์การกำหนดค่าของ Solr ภายใต้ตัวอย่าง/solr/collection1/conf:
cp apache-nutch-1.10/runtime/local/conf/schema-solr4.xml solr-4.10.4/example/solr/collection1/conf
ลบไฟล์ schema.xml ดั้งเดิมของ SOLR:
rm –f solr-4.10.4/example/solr/collection1/conf/schema.xml
และแสดงความคิดเห็น schema-solr4.xml
<copyField source="latLon" dest="location"/>
เปลี่ยนชื่อ schema-solr4.xml เป็น schema.xml:
mv solr-4.10.4/example/solr/collection1/conf/ schema-solr4.xml solr-4.10.4/example/solr/collection1/conf/ schema.xml
ณ จุดนี้ SOLR ได้รับการกำหนดค่าและป้อนไดเรกทอรี SOLR-4.10.4/ตัวอย่าง:
cd solr-4.10.4/example
เริ่ม SOLR:
ในเวลานี้คุณสามารถเข้าถึงพอร์ต 8983 ผ่านเบราว์เซอร์และดูอินเทอร์เฟซการควบคุมของ Solr:
http: // localhost: 8983/solr
ป้อนไดเรกทอรี Nutch Home คำสั่งส่วนใหญ่ที่เราดำเนินการใน Nutch Home Directory แทนที่จะอยู่ในไดเรกทอรี Nutch Bin เพราะสิ่งนี้สามารถดำเนินการคำสั่งที่ซับซ้อนได้อย่างสะดวกยิ่งขึ้น ตรวจสอบคำสั่งการรวบรวมข้อมูลแบบครบวงจร:
bin/crawl
bin/nutch
การเข้าสู่สองคำสั่งข้างต้นแสดงวิธีการใช้งานที่เกี่ยวข้อง คำสั่งที่ใช้กันทั่วไปสองสามคำจะอธิบายรายละเอียดในภายหลังดังแสดงในรูปด้านล่าง:
ตรวจสอบวิธีใช้การรวบรวมข้อมูล:
-i | ดัชนีใช้เพื่อบอก Nutch เพื่อเพิ่มผลลัพธ์ที่รวบรวมไว้ในตัวทำดัชนีที่กำหนดค่า
-d ใช้เพื่อกำหนดค่าพารามิเตอร์ที่ส่งผ่านไปยังการโทร Nutch เราสามารถกำหนดค่าตัวทำดัชนีได้ที่นี่
ไดเรกทอรีไฟล์เมล็ดพันธุ์เมล็ดพันธุ์ที่ใช้ในการเก็บ URL เมล็ดนั่นคือ URL ที่ตัวรวบรวมข้อมูลในตอนแรกคลาน
รวบรวมข้อมูลเส้นทางการจัดเก็บข้อมูลสำหรับการรวบรวมข้อมูลข้อมูล
รอบวนรอบคลาน
ตัวอย่างการใช้งาน:
ป้อนไดเรกทอรีรันไทม์/ท้องถิ่นของ Nutch และสร้างโฟลเดอร์ URL ใหม่:
สร้างไฟล์เมล็ดพันธุ์ใหม่ที่เก็บ url ในโฟลเดอร์ urls, seed.txt
เพิ่ม URL การรวบรวมข้อมูลเริ่มต้นใน URLs/seed.txt: http://www.163.com
เปิดบริการ SOLR มิฉะนั้นดัชนีไม่สามารถสร้างได้ตามปกติใน SOLR
bin/crawl -i -D solr.server.url=http://localhost:8983/solr/ urls/ TestCrawl/ 2
ในคำสั่งนี้ -ฉันบอกให้ Crawler เพิ่มตัวรวบรวมข้อมูลลงในดัชนีที่กำหนด solr.server.url = http: // localhost: 8983/solr/เป็นที่อยู่ของตัวทำดัชนี Solr, URLs/เป็นเส้นทางไฟล์ URL เมล็ดและ Testcrawl เป็นโฟลเดอร์ที่ใช้โดย Nutch เพื่อเก็บข้อมูลการรวบรวมข้อมูล (รวมถึง URL พารามิเตอร์ที่ 2 ที่นี่หมายถึงการคลานวนซ้ำสองครั้ง
โดยการดำเนินการคำสั่งด้านบนคุณสามารถเริ่มคลานหน้าเว็บ ป้อน http: //: 8983/solr ในเบราว์เซอร์เลือกคอลเลกชัน 1 และคุณสามารถค้นหาเนื้อหาที่จัดทำดัชนีผ่านคำหลัก ควรสังเกตที่นี่ว่าตัวรวบรวมข้อมูลไม่ได้คลานหน้าทั้งหมดของ URL ที่ระบุ สำหรับวิธีการเฉพาะในการดูสถานการณ์การคลานโปรดดูการคลานแบบกระจายด้านล่าง
หลังจากการรวบรวมข้อมูลสำเร็จแล้วตัวเลขต่อไปนี้จะแสดงในรูปต่อไปนี้:
บางครั้งการรวบรวมข้อมูลแบบครบวงจรไม่สามารถตอบสนองความต้องการของเราได้ดี ดังนั้นที่นี่ฉันจะแนะนำวิธีการรวบรวมข้อมูลแบบกระจาย: กระบวนการรวบรวมข้อมูลจริงของการรวบรวมข้อมูลแบบกระจายมีหลายคำสั่ง เพื่อให้การดำเนินการง่ายขึ้นการรวบรวมข้อมูลรวมหลายคำสั่งเข้าด้วยกันและมอบให้กับผู้ใช้ หากคุณต้องการเรียนรู้เทคโนโลยี Nutch Crawler ในเชิงลึกมันไม่เพียงพอที่จะใช้คำสั่งรวบรวมข้อมูล คุณต้องคุ้นเคยกับกระบวนการรวบรวมข้อมูลเป็นอย่างมาก ที่นี่คุณต้องใช้ข้อมูล URL ที่บันทึกไว้ใน seed.txt ในบทช่วยสอนก่อนหน้า คุณต้องลบเนื้อหาภายใต้โฟลเดอร์ Data/Crawldb, Data/LinkDB และ Data/Segments เนื่องจากเราจำเป็นต้องรวบรวมข้อมูลอีกครั้งในขั้นตอน
หลังจากดำเนินการคำสั่งรวบรวมข้อมูลโฟลเดอร์ Testcrawl จะถูกสร้างขึ้นภายใต้รันไทม์/ท้องถิ่นของ Nutch ซึ่งมีสามโฟลเดอร์: Crawldb, LinkDB และเซ็กเมนต์
Crawldb: มันมี URL ทั้งหมดที่พบโดย Nutch ซึ่งมีข้อมูลเกี่ยวกับว่า URL ถูกรวบรวมข้อมูลหรือไม่และเมื่อมีการคลาน
LinkDB: มันมีลิงก์ทั้งหมดที่สอดคล้องกับ URL ใน Crawldb ที่ค้นพบโดย Nutch เช่นเดียวกับ URL แหล่งที่มาและข้อความยึด
เซ็กเมนต์: มันมีโฟลเดอร์หลายส่วนที่ตั้งชื่อหลังจากเวลา แต่ละเซ็กเมนต์เป็นหน่วยรวบรวมข้อมูลที่มีชุดของ URL และแต่ละส่วนมีโฟลเดอร์ต่อไปนี้:
crawl_generate:待抓取的URL
crawl_fetch:每个URL的抓取状态
content:从每个URL抓取到的原始内容
parse_text:从每个URL解析得到的文本
parse_data:从每个URL解析得到的外链和元数据
crawl_parse:包含外链URL,用来更新crawldb
bin/nutch inject data/crawldb urls
ในการรวบรวมข้อมูลหน้าด้วย URL ที่ระบุเราจำเป็นต้องสร้างรายการรวบรวมข้อมูลจากฐานข้อมูล (Crawldb):
bin/nutch generate data/crawldb data/segments
หลังจากดำเนินการคำสั่งสร้างรายการหน้าที่จะถูกรวบรวมข้อมูลจะถูกสร้างขึ้นและรายการการรวบรวมข้อมูลจะถูกเก็บไว้ในเส้นทางเซ็กเมนต์ที่สร้างขึ้นใหม่ โฟลเดอร์ของเซ็กเมนต์มีชื่อตามเวลาที่สร้างขึ้น (ชื่อโฟลเดอร์ของบทช่วยสอนนี้คือ 201507151245)
มีพารามิเตอร์ทางเลือกมากมายสำหรับการสร้างผู้อ่านสามารถดูได้ด้วยตัวเองผ่านคำสั่งต่อไปนี้ (เช่นเดียวกันสำหรับคำสั่งอื่น ๆ ):
bin/nutch generate
รวบรวมข้อมูลหน้าเว็บตามรายการรวบรวมข้อมูลที่สร้างโดย Generate:
bin/nutch fetch data/segments/201507151245 #这里的201507151245为文件夹名,需要根据自己的情况进行更改,或者直接采用data/segments文件夹,这样的操作对segments文件夹下的所有子文件夹生效,后文同理。
bin/nutch parse data/segments/201507151245
อัปเดตฐานข้อมูลตามผลลัพธ์ที่รวบรวมข้อมูล:
bin/nutch updated data/crawldb –dir data/segments/201507151245
ฐานข้อมูลตอนนี้มีจุดเข้าทั้งหมดหลังจากที่หน้าเริ่มต้นได้รับการอัปเดตรวมถึงจุดเริ่มต้นใหม่สำหรับหน้าเว็บที่ค้นพบใหม่จากคอลเลกชันเริ่มต้น
ก่อนที่จะสร้างดัชนีเราจะกลับลิงก์ทั้งหมดก่อนเพื่อให้เราสามารถจัดทำดัชนีข้อความจุดยึดต้นฉบับของหน้า
bin/nutch invertlinks data/linkdb –dir data/segments/201507151245
เริ่มบริการ SOLR และตอนนี้เราจัดทำดัชนีทรัพยากรที่รวบรวมข้อมูล:
bin/nutch index data/crawldb -linkdb data/linkdb -params solr.server.url=http://localhost:8983/solr -dir data/segments/201507151245
เมื่อสร้างดัชนีข้อความเต็มแล้วจะต้องประมวลผล URL ซ้ำเพื่อให้ URL ไม่ซ้ำกัน:
bin/nutch dedup
คำสั่งนี้ค้นหา URL ที่ซ้ำกันตามลายเซ็น สำหรับ URL ที่ซ้ำกันที่ทำเครื่องหมายว่าเป็น status_db_duplicate การทำความสะอาดและการจัดทำดัชนีจะลบออกตามแท็ก
bin/nutch clean –D solr.server.url=http://192.168.1.11:8983/solr data/crawldb
ลบเอกสาร HTTP301, 404 และซ้ำซ้อนออกจาก SOLR
จนถึงตอนนี้เราได้ทำตามขั้นตอนการรวบรวมข้อมูลทั้งหมดโดยใช้การคลานทีละขั้นตอน ภายใต้การคลานปกติเราสามารถค้นหาได้ที่ http: // localhost: 8983/solr
ใช้ในการอ่านหรือส่งออกฐานข้อมูลการรวบรวมข้อมูลของ Nutch ซึ่งมักใช้เพื่อดูข้อมูลสถานะของฐานข้อมูลและดูการใช้งานของ ReadDB:
Usage: CrawlDbReader <crawldb> (-stats | -dump <out_dir> | -topN <nnnn> <out_dir> [<min>] | -url <url>)
<crawldb>directory name where crawldb is located
-stats [-sort] print overall statistics to System.out
[-sort]list status sorted by host
-dump <out_dir> [-format normal|csv|crawldb]dump the whole db to a text file in <out_dir>
[-format csv]dump in Csv format
[-format normal]dump in standard format (default option)
[-format crawldb]dump as CrawlDB
[-regex <expr>]filter records with expression
[-retry <num>]minimum retry count
[-status <status>]filter records by CrawlDatum status
-url <url>print information on <url> to System.out
-topN <nnnn> <out_dir> [<min>]dump top <nnnn> urls sorted by score to <out_dir>
[<min>]skip records with scores below this value.
This can significantly improve performance.
ที่นี่ Crawldb เป็นฐานข้อมูลที่บันทึกข้อมูล URL -Stats หมายถึงการดูข้อมูลสถานะทางสถิติ -ความดันหมายถึงการส่งออกข้อมูลทางสถิติ URL หมายถึงการดูข้อมูลของ URL ที่ระบุและข้อมูลสถานะฐานข้อมูลการดู:
ผลลัพธ์ทางสถิติที่ได้รับมีดังนี้:
MacBook-Pro:local root# bin/nutch readdb TestCrawl/crawldb -stats
CrawlDb statistics start: TestCrawl/crawldb
Statistics for CrawlDb: TestCrawl/crawldb
TOTAL urls: 290
retry 0: 290
min score: 0.0
avg score: 0.017355172
max score: 1.929
status 1 (db_unfetched): 270
status 2 (db_fetched): 17
status 3 (db_gone): 2
status 4 (db_redir_temp): 1
CrawlDb statistics: done
URL ทั้งหมดแสดงถึงจำนวน URL ทั้งหมดการลองใหม่แสดงถึงจำนวนเวลาลองอีกครั้งคะแนนขั้นต่ำคือคะแนนต่ำสุดคะแนนสูงสุดคือคะแนนสูงสุดสถานะ 1 (DB_UNFETCHED) คือจำนวนที่ไม่ได้รวบรวมข้อมูลและสถานะ 2 (DB_FETCHED)
readLinkDB ใช้เพื่อส่งออก URL และตัวยึดทั้งหมดดูการใช้งาน:
Usage: LinkDbReader <linkdb> (-dump <out_dir> [-regex <regex>]) | -url <url>
-dump <out_dir>dump whole link db to a text file in <out_dir>
-regex <regex>restrict to url's matching expression
-url <url>print information about <url> to System.out
พารามิเตอร์การถ่ายโอนข้อมูลและ URL ที่นี่เหมือนกับคำสั่ง ReadDB การส่งออกข้อมูล:
bin/nutch readlinkdb data/linkdb -dump linkdb_dump
นำเข้าข้อมูลไปยังโฟลเดอร์ LinkDB_Dump และดูข้อมูลข้อมูลที่ส่งออก:
cat linkdb_dump /*
คุณจะเห็นว่าข้อมูลที่ส่งออกนั้นคล้ายกับรูปแบบต่อไปนี้:
fromUrl: http://www.sanesee.com/article/step-by-step-nutch-introduction anchor: http://archive.apache.org/dist/nutch/
นั่นคือ URL ต้นทางจะถูกบันทึกไว้
ReadSeg ใช้เพื่อดูหรือส่งออกข้อมูลในเซ็กเมนต์และดูการใช้งาน:
Usage: SegmentReader (-dump ... | -list ... | -get ...) [general options]
* General options:
-nocontentignore content directory
-nofetchignore crawl_fetch directory
-nogenerateignore crawl_generate directory
-noparseignore crawl_parse directory
-noparsedataignore parse_data directory
-noparsetextignore parse_text directory
* SegmentReader -dump <segment_dir> <output> [general options]
Dumps content of a <segment_dir> as a text file to <output>.
<segment_dir>name of the segment directory.
<output>name of the (non-existent) output directory.
* SegmentReader -list (<segment_dir1> ... | -dir <segments>) [general options]
List a synopsis of segments in specified directories, or all segments in
a directory <segments>, and print it on System.out
<segment_dir1> ...list of segment directories to process
-dir <segments>directory that contains multiple segments
* SegmentReader -get <segment_dir> <keyValue> [general options]
Get a specified record from a segment, and print it on System.out.
<segment_dir>name of the segment directory.
<keyValue>value of the key (url).
Note: put double-quotes around strings with spaces.
ข้อมูลเซ็กเมนต์การส่งออก:
bin/nutch readseg -dump data/segments/20150715124521 segment_dump
นำเข้าข้อมูลลงในโฟลเดอร์ SEGUTION_DUMP เพื่อดูข้อมูลข้อมูลที่ส่งออก:
cat segment_dump /*
คุณจะเห็นว่ามันมีข้อมูลหน้าเว็บที่เฉพาะเจาะจงมาก
คุณสามารถใช้ WAMP/MAMP หรือ PHPStorm และเซิร์ฟเวอร์ในตัว
สำหรับการดำเนินการเฉพาะโปรดดู: พอร์ทัล
เปิดเทอร์มินัลและเปลี่ยนไปใช้เส้นทางโครงการของคุณ:
composer require silex/silex twig/twig thiagoalessio/tesseract_ocr:dev-master เนื่องจากเราใช้ Mini Framework Silex Framework ของ PHP เราจึงจำเป็นต้องสร้างโครงสร้างของโครงการวิศวกรรมแหล่ง PHP MVC (สาธารณะ, อัปโหลด, มุมมอง) ดังที่แสดงในรูป:
<?php
//如果是在WAMP等其他集成环境下,需要重新获取环境变量的PATH,不然无法调用Tesseract
$ path = getenv ( ' PATH ' );
putenv ( " PATH= $ path :/usr/local/bin " );
require __DIR__ . ' /../vendor/autoload.php ' ;
use Symfony Component HttpFoundation Request ;
$ app = new Silex Application ();
$ app -> register ( new Silex Provider TwigServiceProvider (), [
' twig.path ' => __DIR__ . ' /../views ' ,
]);
$ app [ ' debug ' ] = true ;
$ app -> get ( ' / ' , function () use ( $ app ) {
return $ app [ ' twig ' ]-> render ( ' index.twig ' );
});
$ app -> post ( ' / ' , function ( Request $ request ) use ( $ app ) {
//TODP
});
$ app -> run (); // Grab the uploaded file
$ file = $ request -> files -> get ( ' upload ' );
// Extract some information about the uploaded file
$ info = new SplFileInfo ( $ file -> getClientOriginalName ());
// 产生随机文件名来减少文件名冲突
$ filename = sprintf ( ' %d.%s ' , time (), $ info -> getExtension ());
// Copy the file
$ file -> move ( __DIR__ . ' /../uploads ' , $ filename );** กระบวนการโต้ตอบ: **
1) ผู้ใช้ป้อน URL เว็บไซต์หน้าแรกป้อนหน้าแรกเพลิดเพลินกับบริการและเรียนรู้เกี่ยวกับรายละเอียดการบริการ
2) ผู้ใช้อัปโหลดภาพการค้นหาที่จำเป็นผ่านช่องค้นหาและตัวอย่างก่อนอัปโหลด
3) หลังจากผู้ใช้ยืนยันว่ารูปภาพที่อัปโหลดถูกต้องให้คลิกปุ่มค้นหารูปภาพเพื่ออัปโหลดและระบุรูปภาพ เนื่องจากส่วนนี้ของเซิร์ฟเวอร์มีการคำนวณจำนวนมากจึงใช้เวลา 2-5 วินาทีในการส่งคืนผลลัพธ์ดังนั้นผู้ใช้จึงนำเสนอด้วยหน้าโหลด
4) การรับรู้ภาพเสร็จสมบูรณ์หน้าการโหลดจะหายไปและป้อนหน้าการยืนยันการรับรู้ผลการตรวจสอบตัวอย่าง
5) หลังจากผู้ใช้ยืนยันเนื้อหาการรับรู้เขาสามารถคลิกค้นหาเพื่อป้อนโมดูลเครื่องมือค้นหาเพื่อรับผลการค้นหา
การออกแบบภาพมีองค์ประกอบที่สำคัญอย่างยิ่งในองค์ประกอบผลิตภัณฑ์ซึ่งส่งผลโดยตรงต่อความประทับใจเริ่มต้นของผู้ใช้เกี่ยวกับผลิตภัณฑ์ประสบการณ์ระหว่างการใช้งานและความประทับใจสุดท้ายที่เหลืออยู่ ฯลฯ แม้ในหลายกรณีความสำเร็จหรือความล้มเหลวของผลิตภัณฑ์มักขึ้นอยู่กับประสบการณ์การออกแบบภาพที่ประสบความสำเร็จ สำหรับการออกแบบนี้ฉันไม่ได้คิดว่ามันเป็นระบบที่สามารถจัดการกับสิ่งต่าง ๆ ได้ แต่เป็นผลิตภัณฑ์ที่ฉันสร้างขึ้นอย่างระมัดระวัง ดังนั้นฉันให้ความสนใจอย่างมากกับการออกแบบภาพส่วนหน้าและประสบการณ์การใช้งานของระบบนี้ ในการเลือกสีบนไซต์ทั้งหมดฉันเลือกชุดรูปแบบเครื่องมือค้นหาของ Baidu Search ที่ได้รับการยอมรับจากสาธารณะสีแดงและสีน้ำเงิน พื้นหลังหน้าแรกใช้สีแดงและสีน้ำเงินและปรับความโปร่งใส มันถูกดึงผ่านรหัส CSS ซึ่งช่วยประหยัดเวลาในการโหลดและให้ผลกระทบด้านภาพที่ดีแก่ผู้ใช้ ในเวลาเดียวกันคำอธิบายข้อความของหน้าแรกได้ถูกเพิ่มเข้าไปในเงาด้านล่างและใช้แบบอักษรสีดำ Microsoft Thin เพื่อให้ภาพรู้สึกมากขึ้น กล่องค้นหารูปภาพและกล่องแสดงตัวอย่างยังเพิ่มเงาและความแตกต่างของสีและความแตกต่างของ chromaticity นั้นเกิดขึ้นกับความสำคัญของฟิลด์ตัวอย่าง มันทำให้ผู้ใช้สดชื่นและกระชับด้วยสายตาและสามารถค้นหาข้อมูลที่คุณต้องการโดยเร็วที่สุด จากนั้นมันจะผ่านหน้าการโหลดอย่างง่าย ที่นี่มีวงกลมรอที่จะซูมเข้าและออกเพื่อให้ผู้ใช้ไม่รู้สึกหงุดหงิดกับเวลารอ ในขณะเดียวกันก็บอกผู้ใช้ว่าพื้นหลังระบบกำลังดำเนินการคำนวณและทำงานอยู่ เมื่อกระโดดไปยังหน้าผลลัพธ์การรับรู้สีข้อความและขนาดตัวอักษรทั้งหมดยังคงมีการปรับสายตาตามความสำคัญของสำเนาเพื่อให้ผู้ใช้ไม่ต้องใช้เวลามากเกินไปในการกรองข้อมูลสำคัญ การกำหนดตารางเวลาและการเลือกสีของสองปุ่มยังมีแนวโน้มที่จะเพิ่มความปรารถนาและความรู้สึกในการคลิกทำให้ผู้ใช้ทำการดำเนินการต่อไป สำหรับหน้าผลการค้นหาขั้นสุดท้ายฉันออกแบบเป็นบทที่คล้ายกับหนังสือ แต่ละรายการมีการกำหนดตารางเวลาและการปรับสีขนาดตัวอักษรที่แตกต่างกันขึ้นอยู่กับชื่อหน้าเว็บผลการค้นหาสรุปหน้าเว็บ, เวลารวม, น้ำหนัก, เพื่อเพิ่มผลกระทบด้านภาพและการรับรู้ มันทำให้ผู้ใช้รู้สึกว่าพวกเขามีสามัญกับเครื่องมือค้นหาจำนวนมาก แต่พวกเขาเปิดเผยบุคลิกของตัวเองบางส่วนให้ประสบการณ์ที่คุ้นเคยและแปลกใหม่และยังคงรักษาลักษณะของข้อมูลการแทรกแซงที่สดชื่นและไม่จำเป็นและไม่จำเป็น ยิ่งไปกว่านั้นการออกแบบภาพทั้งหมดรวมแนวคิดการออกแบบที่ตอบสนองได้ในปัจจุบันและมีประสบการณ์การใช้งานที่ดีและเอฟเฟกต์ภาพทั้งบนพีซีและมือถือ
** การเขียนเทมเพลตโดยใช้ Twig: **
ประสบการณ์ส่วนหน้าแสดงอยู่ในรูปด้านล่าง:
ส่วนใหญ่ขึ้นอยู่กับ Bootstrap 3.4 และสามารถบรรจุด้วย XDK/PhoneGap และรวบรวมลงในแอป NA ที่เกี่ยวข้องและเผยแพร่ไปยังตลาดแอปพลิเคชัน ประสบการณ์มือถือแสดงในรูปด้านล่าง:
ขอบคุณครูทุกคนและเพื่อนร่วมชั้นทุกคนที่ช่วยฉันในช่วงสี่ปีของวิทยาลัย พวกเขาสอนความรู้ระดับมืออาชีพให้ฉัน ตลอดระยะเวลาสี่ปีที่ผ่านมาของการศึกษาและการวิจัยทางวิทยาศาสตร์ไม่เพียง แต่โครงสร้างความรู้ของฉันและความสามารถในการวิจัยทางวิทยาศาสตร์ถึงระดับใหม่ แต่ที่สำคัญกว่านั้นคือมันรวมเข้ากับสังคมและให้ประสบการณ์การฝึกงานอย่างเต็มที่ทำให้ฉันได้สัมผัสประสบการณ์การทำงานของ บริษัท อินเทอร์เน็ตจำนวนมากที่นักศึกษาระดับบัณฑิตศึกษาไม่สามารถสัมผัสได้ในระดับปริญญาตรีของฉัน ในพริบตาวิทยาลัยสี่ปีกำลังจะสิ้นสุด เมื่อฉันจบวิทยานิพนธ์ที่สำเร็จการศึกษาด้วยอารมณ์ประสาทฉันก็เปลี่ยนจากเด็กที่ไม่รู้ไปเป็นชายหนุ่มที่เป็นผู้ใหญ่ สิ่งเดียวกัน - มีเพียงเหงื่อเท่านั้นที่จะไม่หลอกลวงคุณ ในที่สุดขอขอบคุณมหาวิทยาลัยวิทยาศาสตร์และเทคโนโลยีอิเล็กทรอนิกส์ทุกคนที่ฉันพบในมหาวิทยาลัยและขอบคุณตัวเองสำหรับการทำงานหนักสี่ปี
https://github.com/daijiale/ocr_fontssearchEngine
http://v.youku.com/v_show/id_xmtyzndy2ndyxng==.html