Ini adalah blog teknis yang terkait dengan teknologi OCR pengenalan gambar, pembelajaran mesin, dan konstruksi mesin pencari sederhana. Di sinilah saya terus merekam hasil penelitian dan pengalaman setiap hari saat melakukan proyek kelulusan.
Teknologi OCR (pengenalan karakter optik) mengacu pada proses di mana perangkat elektronik (seperti pemindai atau kamera digital) memeriksa karakter yang dicetak di atas kertas, menentukan bentuknya dengan mendeteksi pola gelap dan cerah, dan kemudian menerjemahkan bentuk ke dalam teks komputer menggunakan metode pengenalan karakter.
Mesin OCR Tesseract pertama kali dikembangkan oleh HP Labs pada tahun 1985, dan pada tahun 1995 telah menjadi salah satu dari tiga mesin identifikasi paling akurat dalam industri OCR. Namun, HP segera memutuskan untuk menyerahkan bisnis OCR -nya, dan Tesseract juga sia -sia. Beberapa tahun kemudian, HP menyadari bahwa alih -alih meletakkan Tesseract di rak, akan lebih baik untuk berkontribusi pada industri perangkat lunak open source dan meremajakannya - pada tahun 2005, Tesseract diperoleh oleh Institut Teknologi Informasi Nevada di Amerika Serikat, dan berusaha meningkatkan, menghilangkan bug -bug yang mengoptimalkan Tesseract dari Google. Tesseract telah dirilis sebagai proyek open source di Google Project, dan versi terbaru 3.0 sudah mendukung OCR Cina.
Dalam latar belakang teknologi yang matang seperti itu, saya benar -benar ingin menggunakan teknologi OCR ini dan menggabungkannya dengan teknologi pengembangan internet seluler populer saat ini dan teknologi pengambilan informasi untuk mewujudkan mesin pencari web seluler yang dapat berhasil mengidentifikasi karakter Cina dalam gambar, yang bertujuan untuk mendapatkan informasi yang Anda inginkan dari gambar lebih cepat dan akurat.
Dengan pengembangan internet yang cepat dan kedatangan data besar, orang semakin bergantung pada data dan informasi. Namun, data internet saat ini sangat besar, dan selalu ada masalah besar dengan keakuratan data dan klasifikasi data yang masuk akal. Mengingat situasi ini, semakin banyak orang berharap menemukan cara yang lebih nyaman untuk mendapatkan data yang akurat dalam pekerjaan dan kehidupan sehari -hari, dan untuk menemukan cara untuk menemukan informasi yang mereka cari dengan lebih efisien. Pada saat yang sama, dengan popularitas smartphone, semakin banyak orang lebih terbiasa menggunakan metode yang sangat efisien seperti mengambil foto untuk menggantikan metode penyalinan dan pengetikan sebelumnya untuk merekam data yang perlu direkam dalam kehidupan dan pekerjaan. Terinspirasi oleh ini, saya ingin menggunakan teknologi OCR (pengenalan karakter optik) yang lebih matang saat ini, serta teknologi pengembangan internet populer saat ini dan teknologi pengambilan informasi untuk mewujudkan mesin pencari web yang dapat berhasil mengenali font bahasa gambar. Ini bertujuan untuk mencari lebih banyak teman dari gambar lebih cepat dan akurat melalui metode yang nyaman seperti mengambil foto dan tangkapan layar.
Arsitektur backend terutama dibagi menjadi tiga modul utama: modul OCR, modul mesin pencari, dan modul middleware pesan 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.
```
di dalam:
tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...] Menunjukkan tesseract 图片名输出文件名-l 字库文件-psm pagesegmode 配置文件.
Misalnya: tesseract code.jpg result -l chi_sim -psm 7 nobatch
-l chi_sim berarti menggunakan perpustakaan font Cina yang disederhanakan (Anda perlu mengunduh file pustaka font Cina, mendekompresnya, dan menyimpannya di direktori tessdata . Ekstensi file font adalah .raineddata nama file pustaka font Cina yang disederhanakan: chi_sim.traineddata ).-psm 7 berarti memberi tahu tesseract code.jpg bahwa gambar adalah baris teks. Parameter ini dapat mengurangi tingkat kesalahan pengakuan. Standarnya adalah 3 .** Tes Font Bahasa Inggris: **
** Tes Font Cina: **
Sekarang mari kita membangun perpustakaan bahasa font dan pelatihan data sampel bahasa font
**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).
Wiki resmi
Bimbingan Cina
Di Mac, gunakan Spotlight untuk mengaktifkan Terminal
vi /etc/profile
Pada saat ini, tekan huruf I pada keyboard untuk memasukkan mode pengeditan, dan masukkan dua baris perintah berikut di bawah terminal:
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
Kemudian tekan ESC untuk mengakhiri pengeditan, lalu masukkan: WQ! KELUAR
source /etc/profile
java -version
Jika informasi versi Java muncul, itu membuktikan bahwa instalasi berhasil!
PENDAHULUAN: Ketika proyek kode menjadi besar, setiap kali dikompilasi ulang, dikemas, diuji, dll. Menjadi sangat rumit dan berulang. Oleh karena itu, ada skrip membuat dalam bahasa C untuk membantu menyelesaikan tugas -tugas ini dalam batch. Aplikasi di Java adalah platform-independen, dan tentu saja, mereka tidak akan menggunakan skrip membuat platform terkait untuk menyelesaikan tugas batch ini. Semut itu sendiri adalah mesin skrip proses seperti itu, yang digunakan untuk mengotomatisasi program panggilan untuk menyelesaikan kompilasi, pengemasan, pengujian proyek, dll. Selain platform-independen berdasarkan Java, format skrip didasarkan pada XML, yang lebih mudah dipelihara daripada membuat skrip.
Pilihan Versi: Apache-Ant-1.9.6-Bin.zip
Alamat Unduh: Situs Web Resmi Ant
Mulai instalasi:
sudo sh
cd /usr/local/
chown YourUserName:staff apache-ant-1.9.6
ln -s apache-ant-1.9.6 ant
vi /etc/profile
Pada saat ini, tekan huruf I pada keyboard untuk memasukkan mode pengeditan, dan masukkan dua baris perintah berikut di bawah terminal:
export ANT_HOME=/usr/local/ant
export PATH=${PATH}:${ANT_HOME}/bin
Kemudian tekan ESC untuk mengakhiri pengeditan, lalu masukkan: WQ! KELUAR
source /etc/profile
ant -version
Apache Ant (TM) Versi 1.9.6 Disusun pada Muncul ... Tampilan ini membuktikan bahwa instalasi berhasil!
Pendahuluan: Saat ini, Nutch dibagi menjadi dua versi besar 1.x dan 2.x. Apache secara mandiri mengembangkan dan memelihara dua versi besar ini. Di antara mereka, perbedaan terbesar antara 1.x dan 2.x adalah bahwa 1.x didasarkan pada sistem file HDFS Hadoop, sementara 2.x abstrak lapisan penyimpanan data dan dapat menyimpan data dalam database seperti HBase dan MySQL. Hal penting lainnya adalah bahwa Nutch dirilis sebagai mesin pencari lengkap di 1.2 dan sebelumnya. Sejak 1.3, Nutch sendiri terutama hanya memiliki fungsi merangkak. Jika perlu untuk mengindeks dan mencari data merangkak, juga perlu untuk menggunakan server pencarian teks lengkap SOLR. Karena Nutch dan Solr dikembangkan berdasarkan Lucene, data yang dirangkak oleh Nutch dapat dengan mudah diindeks di SOLR. Situs web resmi NUTCH dapat mengunduh paket 1.x yang dikompilasi, tetapi 2.x hanya menyediakan kode sumber dan perlu dikompilasi sendiri. Nutch dibangun menggunakan semut. Jika Anda mengkompilasinya sendiri, Anda perlu menginstal ANT untuk menyusun kode sumber. Mengenai cara memilih versi Nutch, kami terutama mempertimbangkan masalah-masalah berikut: Jika Anda hanya perlu merangkak sejumlah kecil situs web dan mengindeksnya, Anda dapat menggunakan 1.x dan 2.x, dan Anda bahkan dapat menggunakan berdiri sendiri tanpa perlu yang terdistribusi. Tetapi jika Anda ingin merangkak sejumlah besar situs web, atau bahkan merangkak seluruh web, yang terbaik adalah memilih 1.x dan menggunakan terdistribusi, karena 1.x didasarkan pada sistem file Hadoop, yang dibuat khusus untuk memproses data besar. Jika Anda menggunakan 2.x saat merangkak sejumlah besar situs web, Anda mungkin mengalami beberapa masalah kinerja. Jika Anda menggunakan MySQL untuk menyimpan data, kinerja akan menjadi mimpi buruk ketika data halaman web melebihi puluhan miliar. Versi nutch1.x yang berbeda juga telah banyak berubah, dan eksekusi perintah telah mengalami perubahan besar. Oleh karena itu, disarankan agar pemula mengunduh versi 1.10 yang sesuai dari tutorial ini. Ketika Anda terbiasa menggunakan Nutch, perubahan itu tidak akan memiliki banyak dampak pada Anda. Nutch adalah salah satu perayap open source paling populer saat ini, dan telah banyak digunakan oleh perusahaan. Mekanisme plug-in Nutch memungkinkan pengembang untuk secara fleksibel menyesuaikan strategi merangkak web. Nutch memiliki sejarah panjang, dan Hadoop yang terkenal hari ini dikembangkan dari Nutch. Nutch tidak hanya dapat berjalan dalam mode yang berdiri sendiri, tetapi juga dalam mode terdistribusi. Nutch hanya mendukung bekerja di lingkungan Linux, sehingga dapat digunakan langsung di bawah OS X. seperti Linux.
Pilihan Versi: Apache-nutch-1.10-src.zip
Alamat Unduh: Situs Web Resmi Nutch
Mulai instalasi:
unzip apache-nutch-1.10-src.zip
cd apache-nutch-1.10
vi conf/nutch-default.xml
Temukan atribut http.agent.name, salin ke conf/nutch-site.xml, dan ubah nilai nilai yang tidak kosong. Berikut ini adalah kustomisasi sebagai: HD Nutch Agent, dan kemudian terus merangkak perintah akan melaporkan kesalahan. The Modified Nutch-Site.xml adalah sebagai berikut:
<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>
Atribut http.agent.name digunakan untuk menandai crawler, sehingga situs web merayap dapat mengidentifikasi mereka.
Properti yang dikonfigurasi dalam nutch-site.xml akan mengganti properti default dalam nutch-default . Di sini kami hanya memodifikasi atribut http.agent.name , dan tidak ada perubahan yang akan dilakukan untuk yang lain.
Pada titik ini, kami telah mengkonfigurasi NUTCH, dan kemudian menyusun kode sumber menggunakan perintah berikut di direktori Home Nutch.
Beralih ke direktori Nutch Home untuk mengeksekusi:
ant
Proses kompilasi pertama akan membutuhkan banyak waktu karena lebih banyak paket ketergantungan yang perlu diunduh. Waktu spesifik tergantung pada situasi jaringan yang sebenarnya. Butuh 5-10 menit jika cepat, dan lebih dari 20 menit jika lambat.
Peringatan berikut akan dilaporkan pada awal kompilasi:
Tidak dapat memuat definisi dari sumber daya org/sonar/semut/antlib.xml. Itu tidak bisa ditemukan.
Peringatan ini tidak mempengaruhi hasil kompilasi dan dapat diabaikan.
Mungkin juga ada masalah jaringan selama proses kompilasi. Anda hanya perlu menggunakan perintah berikut untuk menghapus hasil kompilasi terakhir (paket ketergantungan yang sudah diunduh tidak akan dihapus):
ant clean
Dalam kasus jaringan yang buruk, dua langkah di atas dapat diulang beberapa kali.
Ketika informasi serupa muncul, itu berarti kompilasi berhasil:
Membangun sukses
Total waktu: 1 menit 7 detik
Seperti yang ditunjukkan pada gambar di bawah ini:
Setelah Nutch berhasil dikompilasi, folder runtime akan dihasilkan di direktori home. Ini berisi dua subfolder Deploy dan Local. Deploy digunakan untuk merangkak terdistribusi, sedangkan lokal digunakan untuk merangkak lokal sendiri. Bagian ini pertama kali menjelaskan penggunaan merangkak lokal yang berdiri sendiri, dan merangkak terdistribusi ditempatkan dalam tutorial berikutnya.
Masukkan folder lokal dan kemudian masukkan folder bin. Ada dua file skrip, satu adalah Nutch dan yang lainnya merangkak. Di antara mereka, Nutch berisi semua perintah yang diperlukan, dan merangkak terutama digunakan untuk merangkak satu atap.
Seperti yang ditunjukkan pada gambar di bawah ini:
unzip solr-4.10.4.zip
Dapatkan folder Solr-4.10.4, salin runtime/lokal/conf/solr4.xml di direktori NUTCH ke direktori file konfigurasi SOLR di bawah Contoh/solr/collection1/conf:
cp apache-nutch-1.10/runtime/local/conf/schema-solr4.xml solr-4.10.4/example/solr/collection1/conf
Hapus file schema.xml asli Solr:
rm –f solr-4.10.4/example/solr/collection1/conf/schema.xml
Dan mengomentari skema-solr4.xml
<copyField source="latLon" dest="location"/>
Ganti nama schema-olr4.xml menjadi schema.xml:
mv solr-4.10.4/example/solr/collection1/conf/ schema-solr4.xml solr-4.10.4/example/solr/collection1/conf/ schema.xml
Pada titik ini, SOLR dikonfigurasi dan masukkan direktori Solr-4.10.4/contoh:
cd solr-4.10.4/example
Mulai Solr:
Saat ini, Anda dapat mengakses port 8983 melalui browser dan melihat antarmuka kontrol Solr:
http: // localhost: 8983/solr
Masukkan Direktori Home Nutch, sebagian besar perintah yang kami jalankan di Direktori Home Nutch, daripada di direktori Nutch Bin, karena ini dapat dengan lebih mudah menjalankan beberapa perintah kompleks. Lihat perintah merangkak satu atap:
bin/crawl
bin/nutch
Memasuki dua perintah di atas menunjukkan metode penggunaan masing -masing. Beberapa perintah yang umum digunakan akan dijelaskan secara rinci nanti, seperti yang ditunjukkan pada gambar di bawah ini:
Periksa cara menggunakan crawl:
-I | Indeks digunakan untuk memberi tahu Nutch untuk menambahkan hasil merangkak ke pengindeks yang dikonfigurasi.
-D digunakan untuk mengkonfigurasi parameter yang diteruskan ke panggilan NUTCH, kami dapat mengkonfigurasi pengindeks di sini.
Direktori File Biji Dir Dir, digunakan untuk menyimpan URL benih, yaitu URL yang awalnya perayap merayap.
Merangkak jalur penyimpanan dir untuk merangkak data.
Num Rounds Loop Crawls.
Contoh Penggunaan:
Masukkan direktori runtime/lokal Nutch dan buat folder URLS baru:
Buat file benih baru yang menyimpan URL di folder URLS, seed.txt
Tambahkan URL perayapan awal ke URL/seed.txt: http://www.163.com
Nyalakan Layanan Solr, jika tidak indeks tidak dapat ditetapkan secara normal di Solr
bin/crawl -i -D solr.server.url=http://localhost:8983/solr/ urls/ TestCrawl/ 2
Dalam perintah ini, -Saya memberitahu crawler untuk menambahkan crawler ke indeks yang diberikan. solr.server.url = http: // localhost: 8983/solr/adalah alamat penginduk Solr, URL/adalah jalur file URL benih, dan testcrawl adalah folder yang digunakan oleh Nutch untuk menyimpan data crawler (termasuk URL, kandungan yang dirangkak, dll.). Parameter 2 di sini berarti loop merangkak dua kali.
Dengan mengeksekusi perintah di atas, Anda dapat mulai merangkak halaman web. Masukkan http: //: 8983/solr di browser, pilih Collection1, dan Anda dapat mencari konten yang diindeks melalui kata kunci. Perlu dicatat di sini bahwa crawler belum merangkak semua halaman URL yang ditentukan. Untuk metode spesifik melihat situasi merangkak, silakan merujuk ke merangkak yang didistribusikan di bawah ini.
Setelah merangkak berhasil, gambar berikut ditunjukkan pada gambar berikut:
Terkadang, perayapan satu atap tidak dapat memenuhi kebutuhan kita dengan baik. Oleh karena itu, di sini saya akan memperkenalkan metode perayapan terdistribusi: proses perayapan yang sebenarnya dari perayapan terdistribusi berisi banyak perintah. Untuk menyederhanakan operasi, Crawl menggabungkan beberapa perintah bersama -sama dan memberikannya kepada pengguna. Jika Anda ingin mempelajari teknologi crawler Nutch secara mendalam, tidak cukup hanya menggunakan perintah crawl. Anda juga harus sangat akrab dengan proses merangkak. Di sini Anda perlu menggunakan informasi URL yang disimpan di seed.txt dalam tutorial sebelumnya. Anda juga perlu menghapus konten di bawah folder Data/CrawldB, Data/LinkDB dan Data/Segmen, karena kita perlu merayapi kembali data dalam langkah-langkah.
Setelah menjalankan perintah perayapan, folder testcrawl akan dihasilkan di bawah runtime/lokal Nutch, yang berisi tiga folder: crawldb, linkdb dan segmen.
Crawldb: Ini berisi semua URL yang ditemukan oleh Nutch, yang berisi informasi tentang apakah URL dirangkak dan ketika dirangkak.
LinkDB: Ini berisi semua tautan yang sesuai dengan URL di crawldb yang ditemukan oleh Nutch, serta URL sumber dan teks jangkar.
Segmen: Ini berisi beberapa folder segmen yang dinamai waktu. Setiap segmen adalah unit merangkak, berisi serangkaian URL, dan setiap segmen berisi folder berikut:
crawl_generate:待抓取的URL
crawl_fetch:每个URL的抓取状态
content:从每个URL抓取到的原始内容
parse_text:从每个URL解析得到的文本
parse_data:从每个URL解析得到的外链和元数据
crawl_parse:包含外链URL,用来更新crawldb
bin/nutch inject data/crawldb urls
Untuk merangkak halaman dengan URL yang ditentukan, kita perlu menghasilkan daftar perayapan dari database (crawldb):
bin/nutch generate data/crawldb data/segments
Setelah perintah Generate dieksekusi, daftar halaman yang akan dirangkak akan dihasilkan, dan daftar merangkak akan disimpan di jalur segmen yang baru dibuat. Folder segmen dinamai sesuai dengan waktu dibuat (nama folder tutorial ini adalah 201507151245).
Ada banyak parameter opsional untuk dibuat, pembaca dapat melihatnya sendiri melalui perintah berikut (hal yang sama berlaku untuk perintah lain):
bin/nutch generate
Merangkak halaman web sesuai dengan daftar perayapan yang dihasilkan oleh Generate:
bin/nutch fetch data/segments/201507151245 #这里的201507151245为文件夹名,需要根据自己的情况进行更改,或者直接采用data/segments文件夹,这样的操作对segments文件夹下的所有子文件夹生效,后文同理。
bin/nutch parse data/segments/201507151245
Perbarui database berdasarkan hasil yang dirangkak:
bin/nutch updated data/crawldb –dir data/segments/201507151245
Basis data sekarang berisi semua titik masuk setelah halaman awal telah diperbarui, serta titik masuk baru untuk halaman yang baru ditemukan dari koleksi awal.
Sebelum membuat indeks, pertama -tama kami membalikkan semua tautan sehingga kami dapat mengindeks teks jangkar sumber halaman.
bin/nutch invertlinks data/linkdb –dir data/segments/201507151245
Mulai Layanan Solr, dan sekarang kami mengindeks sumber daya yang dirangkak:
bin/nutch index data/crawldb -linkdb data/linkdb -params solr.server.url=http://localhost:8983/solr -dir data/segments/201507151245
Setelah indeks teks lengkap dibuat, ia harus memproses URL duplikat sehingga URL unik:
bin/nutch dedup
Perintah ini mencari URL duplikat berdasarkan tanda tangan. Untuk URL duplikat yang ditandai sebagai status_db_duplicate, pembersihan dan tugas pengindeksan akan menghapusnya sesuai dengan tag.
bin/nutch clean –D solr.server.url=http://192.168.1.11:8983/solr data/crawldb
Hapus http301, 404 dan duplikat dokumen dari Solr.
Sejauh ini, kami telah menyelesaikan semua langkah merangkak menggunakan langkah demi langkah merangkak. Di bawah perayapan normal, kita dapat mencari di http: // localhost: 8983/solr.
Digunakan untuk membaca atau mengekspor database merangkak Nutch, biasanya digunakan untuk melihat informasi status database dan melihat penggunaan 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.
Di sini CrawldB adalah database yang menyimpan informasi URL. -Stats berarti melihat informasi status statistik, -dump berarti mengekspor informasi statistik, URL berarti melihat informasi dari URL yang ditentukan, dan melihat informasi status basis data:
Hasil statistik yang diperoleh adalah sebagai berikut:
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
Total URL mewakili jumlah total URL, RETRY mewakili jumlah kali coba lagi, skor menit adalah skor terendah, skor maks adalah skor tertinggi, status 1 (db_unfetched) adalah jumlah yang tidak dirayapi, dan status 2 (db_fetched) adalah angka yang dirangkak.
ReadLinkDB digunakan untuk mengekspor semua URL dan teks jangkar, Tampilan Penggunaan:
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
Parameter dump dan url di sini sama dengan perintah readdb, mengekspor data:
bin/nutch readlinkdb data/linkdb -dump linkdb_dump
Impor data ke folder LinkDB_DUMP dan lihat informasi data yang diekspor:
cat linkdb_dump /*
Anda dapat melihat bahwa informasi yang diekspor mirip dengan format berikut:
fromUrl: http://www.sanesee.com/article/step-by-step-nutch-introduction anchor: http://archive.apache.org/dist/nutch/
Artinya, URL sumber dicatat.
Readseg digunakan untuk melihat atau mengekspor data di segmen dan melihat penggunaan:
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.
Ekspor Data Segmen:
bin/nutch readseg -dump data/segments/20150715124521 segment_dump
Impor data ke folder Segment_Dump untuk melihat informasi data yang diekspor:
cat segment_dump /*
Anda dapat melihat bahwa itu berisi informasi halaman web yang sangat spesifik.
Anda dapat menggunakan WAMP/MAMP, atau PHPSTorm dan server bawaannya.
Untuk operasi tertentu, silakan merujuk ke: Portal
Buka terminal dan beralih ke jalur proyek Anda:
composer require silex/silex twig/twig thiagoalessio/tesseract_ocr:dev-master Karena kami menggunakan kerangka kerja mini PHP, Silex Framework , kami perlu menetapkan struktur proyek rekayasa sumber PHP MVC (publik, unggahan, tampilan), seperti yang ditunjukkan pada gambar:
<?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 );** Proses Interaksi: **
1) Pengguna memasukkan URL situs web beranda, masukkan beranda, nikmati layanan, dan pelajari tentang detail layanan.
2) Pengguna mengunggah gambar pencarian yang diperlukan melalui kotak pencarian dan pratinjau sebelum mengunggah.
3) Setelah pengguna mengonfirmasi bahwa gambar yang diunggah sudah benar, klik tombol pencarian gambar untuk mengunggah dan mengidentifikasi gambar. Karena bagian sisi server ini memiliki sejumlah besar perhitungan, dibutuhkan 2-5 detik untuk mengembalikan hasilnya, sehingga pengguna disajikan dengan halaman pemuatan.
4) Pengenalan gambar selesai, halaman pemuatan menghilang, dan halaman konfirmasi pratinjau hasil pengakuan dimasukkan.
5) Setelah pengguna mengonfirmasi konten, ia dapat mengklik pencarian untuk memasukkan modul mesin pencari untuk mendapatkan hasil pencarian.
Desain visual menempati komponen yang sangat penting dalam komposisi produk, yang secara langsung mempengaruhi kesan awal pengguna tentang produk, pengalaman selama penggunaan, dan kesan akhir yang tersisa, dll. Bahkan dalam banyak kasus, keberhasilan atau kegagalan suatu produk sering tergantung pada pengalaman desain visual yang berhasil. Untuk desain ini, saya tidak menganggapnya sebagai sistem yang dapat menangani sesuatu, tetapi sebagai produk yang saya buat dengan hati -hati. Oleh karena itu, saya sangat memperhatikan desain visual front-end dan pengalaman pengguna sistem ini. Untuk memilih warna di seluruh situs, saya memilih warna tema mesin pencari Baidu yang lebih dikenali oleh publik, merah dan biru. Latar belakang halaman beranda menggunakan warna transisi merah dan biru, dan menyesuaikan transparansi. Ini ditarik melalui kode CSS, yang menghemat waktu pemuatan dan memberi pengguna dampak visual yang baik. Pada saat yang sama, deskripsi teks dari beranda telah ditambahkan ke bayangan bawah dan menggunakan font hitam Microsoft Thin untuk membuat visual terasa lebih berlapis. Kotak pencarian gambar dan kotak pratinjau juga meningkatkan bayangan, dan warna yang berbeda dan perbedaan kromatik dibuat dengan pentingnya bidang pratinjau. Itu membuat pengguna menyegarkan secara visual dan ringkas, dan dapat menemukan informasi yang Anda butuhkan sesegera mungkin. Kemudian, itu akan melewati halaman pemuatan sederhana. Di sini, lingkaran menunggu dibuat untuk memperbesar dan keluar, sehingga pengguna tidak merasa kesal dengan waktu tunggu. Pada saat yang sama, ini memberi tahu pengguna bahwa latar belakang sistem melakukan perhitungan dan berjalan. Saat melompat ke halaman hasil pengakuan, semua warna teks dan ukuran font masih disesuaikan secara visual sesuai dengan pentingnya salinannya, sehingga pengguna tidak harus menghabiskan terlalu banyak waktu untuk menyaring informasi penting. Penjadwalan dan pemilihan warna kedua tombol juga cenderung meningkatkan keinginan dan rasa mengklik, mendorong pengguna untuk melakukan operasi berikutnya. Untuk halaman Hasil Pencarian Akhir, saya merancangnya menjadi bab yang mirip dengan buku. Setiap daftar memiliki penyesuaian warna penjadwalan dan ukuran font yang berbeda berdasarkan judul halaman web hasil pencarian, ringkasan halaman web, waktu inklusi, berat, untuk meningkatkan dampak visual dan pengakuan. Itu membuat pengguna merasa bahwa mereka memiliki beberapa kesamaan dengan mesin pencari massal, tetapi mereka mengungkapkan beberapa kepribadian mereka sendiri, memberi pengguna pengalaman yang akrab dan baru, dan juga mempertahankan karakteristik informasi interferensi yang menyegarkan dan bebas iklan dan tidak perlu. Selain itu, semua desain visual menggabungkan konsep desain responsif saat ini, dan memiliki pengalaman pengguna yang baik dan efek visual pada PC dan seluler.
** Penulisan template menggunakan ranting: **
Pengalaman front-end ditunjukkan pada gambar di bawah ini:
Ini terutama didasarkan pada Bootstrap 3.4, dan dapat dikemas dengan XDK/PhoneGap dan dikompilasi ke dalam aplikasi NA yang sesuai dan diterbitkan ke pasar aplikasi. Pengalaman seluler ditunjukkan pada gambar di bawah ini:
Terima kasih kepada semua guru dan semua teman sekelas yang membantu saya dalam empat tahun kuliah. Mereka mengajari saya pengetahuan profesional. Melalui empat tahun terakhir studi dan penelitian ilmiah, tidak hanya memiliki struktur pengetahuan dan kemampuan penelitian ilmiah saya mencapai tingkat yang baru, tetapi yang lebih penting, tetapi juga telah diintegrasikan ke dalam masyarakat dan memberi saya pengalaman magang penuh, memungkinkan saya untuk mengalami banyak pengalaman kerja perusahaan internet yang tidak dapat dialami oleh mahasiswa pascasarjana dalam gelar sarjana saya. Dalam kedipan mata, empat tahun kuliah akan segera berakhir. Ketika saya menyelesaikan tesis kelulusan ini dengan suasana hati yang gugup, saya juga berubah dari anak yang bodoh menjadi seorang pemuda yang matang. Hal yang sama - hanya keringat yang tidak akan menipu Anda. Akhirnya, berterima kasih kepada Universitas Sains dan Teknologi Elektronik, semua orang yang saya temui di universitas, dan berterima kasih atas kerja keras saya selama empat tahun.
https://github.com/daijiale/ocr_fontssearchengine.
http://v.youku.com/v_show/id_xmtyzndy2ndyxng==.html.