Это технический блог, связанный с технологией распознавания изображений, машинного обучения и простой строительство поисковых систем. Именно здесь я продолжаю записывать результаты исследований и опыт каждый день во время выпускного проекта.
Технология OCR (оптическое распознавание символов) относится к процессу, в котором электронные устройства (такие как сканеры или цифровые камеры) проверяют символы, напечатанные на бумаге, определяют их формы, обнаруживая темные и яркие узоры, а затем переводят формы в компьютерный текст, используя методы распознавания символов.
Двигатель Tesseract OCR был впервые разработан HP Labs в 1985 году, и к 1995 году он стал одним из трех наиболее точных идентификационных двигателей в индустрии OCR. Тем не менее, HP вскоре решил отказаться от своего бизнеса OCR, и Tesseract также был напрасным. Несколько лет спустя HP понял, что вместо того, чтобы поставить Tesseract на полку, было бы лучше внести свой вклад в индустрии программного обеспечения с открытым исходным кодом и омолаживать ее - в 2005 году Tesseract был получен Институтом информационных технологий Невады в Соединенных Штатах и стремился улучшить, устранить ошибки и оптимизировать Tesseract из Google. 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 . Расширение файла шрифта .raineddata упрощенное китайское библиотечное библиотечное имя: chi_sim.traineddata ).-psm 7 означает сообщать tesseract code.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 используйте Spotlight, чтобы включить терминал
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 предоставляет только исходный код и должен быть скомпилирован самостоятельно. Натч построен с использованием муравья. Если вы сами скомпилируете его, вам нужно установить 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, поэтому его можно использовать непосредственно под Linux-подобным OS X.
Выбор версии: 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 используется для маркировки Crawlers, чтобы сайт ползал мог идентифицировать их.
Свойства, настроенные в nutch-site.xml будут переоценить свойства по умолчанию в nutch-default . Здесь мы только изменяем атрибут http.agent.name , и для других не будет внесено никаких изменений.
На этом этапе мы настроили Nutch, а затем собрали исходный код, используя следующую команду в Home Home Directory.
Переключитесь на Hutch Home Directory, чтобы выполнить:
ant
Первый процесс компиляции займет много времени, потому что необходимо загрузить больше пакетов зависимостей. Конкретное время зависит от фактической ситуации в сети. Это занимает 5-10 минут, если он быстр, и более 20 минут, если он медленно.
Следующее предупреждение будет сообщено в начале компиляции:
Не удалось загрузить определения из ресурса Org/Sonar/ant/antlib.xml. Это не могло быть найдено.
Это предупреждение не влияет на результат компиляции и может быть проигнорировано.
Во время процесса компиляции также может возникнуть проблема с сетью. Вам нужно только использовать следующую команду, чтобы очистить последнее результат компиляции (уже загруженный пакет зависимостей не будет удален):
ant clean
В случае плохой сети приведенные выше два шага могут повторяться несколько раз.
Когда появляется аналогичная информация, это означает, что компиляция успешна:
Построить успешно
Общее время: 1 минута 7 секунд
Как показано на рисунке ниже:
После успешного составления Nutch в домашнем каталоге будет создана папка времени выполнения. Он содержит два подпапки развертывания и локально. Развертывание используется для распределенного ползания, в то время как локальный используется для местного автономного ползания. В этом разделе сначала объясняется использование локального автономного ползания, а в последующем учебном пособии разместятся распределенное ползание.
Введите локальную папку, а затем введите папку корзины. Есть два файла скрипта, один из них Nutch, а другой ползает. Среди них Nutch содержит все необходимые команды, а Clawl в основном используется для универсального ползания.
Как показано на рисунке ниже:
unzip solr-4.10.4.zip
Получите папку Solr-4.10.4, скопируйте время выполнения/локальный/конфликт/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
Удалить исходный файл SOLR с SCEMA.xml:
rm –f solr-4.10.4/example/solr/collection1/conf/schema.xml
И прокомментировать схему-solr4.xml
<copyField source="latLon" dest="location"/>
Переименовать схема-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
Введите Hutch Home Directory, большинство команд, которые мы выполняем в каталоге Nutch Home, а не в каталоге Nutch Bin, потому что это может более удобно выполнить некоторые сложные команды. Проверьте команду ползания в универсальном положении:
bin/crawl
bin/nutch
Ввод вышеупомянутых двух команд показывает их соответствующие методы использования. Несколько часто используемых команд будут подробно объяснены позже, как показано на рисунке ниже:
Проверьте, как использовать Crawl:
-i | Индекс используется для того, чтобы сообщить Nutch, чтобы добавить результат ползания в настроенный индексатор.
-Д используется для настройки параметров, передаваемых к вызову Nutch, мы можем настроить индексатор здесь.
Справочник файлов семян семян, используемый для хранения URL -адреса семян, то есть URL, который гусеничный изначально ползает.
Полновой путь для хранения для ползания.
Num Rounds Loop Crawls.
Пример использования:
Введите введите время выполнения/локальный каталог 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
В этой команде -i говорит Crawler добавить Crawler к данному индексу. solr.server.url = http: // localhost: 8983/solr/ - адрес индексера Solr, URLS/IS PATH FILE URL -файла, а Testclawl - это папка, используемая Nutch для хранения данных Hrawler (включая URL, контент, и т. Д.). Параметр 2 ЗДЕСЬ означает, что петля ползает дважды.
Выполнив приведенную выше команду, вы можете начать ползать по веб -странице. Введите http: //: 8983/solr в браузере, выберите Collection1, и вы можете найти индексированное контент через ключевые слова. Здесь следует отметить, что гусеница не ползал на всех страницах указанного URL. Для конкретного метода просмотра ситуации ползания, пожалуйста, обратитесь к распределенному ползанию ниже.
После успеха ползания показано на следующем рисунке следующее рисунок:
Иногда универсальный ползание не может удовлетворить наши потребности. Поэтому здесь я представлю метод распределенного ползания: фактический процесс сканирования распределенного ползания содержит несколько команд. Чтобы упростить операции, Crawl объединяет несколько команд вместе и предоставляет их пользователям. Если вы хотите изучить технологию Nutch Crawler в глубине, недостаточно просто использовать команду Crawl. Вы также должны быть очень знакомы с процессом ползания. Здесь вам нужно использовать информацию URL -адреса, сохраненную в Seed.txt в предыдущем учебном пособии. Вам также необходимо удалить содержимое в папках Data/Crawldb, Data/Linkdb и Data/Segments, потому что нам нужно повторно закрепить данные.
После выполнения команды Crawl, папка Testcrowl будет генерироваться в условиях выполнения/локального 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
После того, как команда Generate будет выполнена, будет сгенерирован список страниц, которые будут сгенерированы, и список ползает будет сохранен в недавно созданном пути сегмента. Папка сегмента названа в соответствии с временем, которое было создано (название папки этого учебника - 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 означает просмотр информации о статистическом статусе, -dump означает экспорт статистической информации, 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 -адресов, Retry представляет количество времени повторной попытки, оценка MINS - это самый низкий балл, максимальный балл - самый высокий балл, статус 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
Импортируйте данные в папку segment_dump для просмотра экспортируемой информации данных:
cat segment_dump /*
Вы можете видеть, что он содержит очень конкретную информацию о веб -странице.
Вы можете использовать WAMP/MAMP или Phpstorm и его встроенный сервер.
Для конкретных операций, пожалуйста, обратитесь к: порталу
Откройте терминал и переключитесь на путь вашего проекта:
composer require silex/silex twig/twig thiagoalessio/tesseract_ocr:dev-master Поскольку мы используем Mini Framework PHP Silex Framework , нам необходимо установить структуру PHP Source Engineering Project 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) После того, как пользователь подтверждает содержание распознавания, он может нажать поиск, чтобы ввести модуль поисковой системы, чтобы получить результаты поиска.
Visual Design занимает чрезвычайно важный компонент в составе продукта, который непосредственно влияет на первоначальное впечатление пользователя о продукте, опыт во время использования и окончательное впечатление, оставшееся и т. Д. Даже во многих случаях успех или сбой продукта часто зависят от успешного опыта визуального дизайна. Для этого дизайна я не рассматривал это как систему, которая может справиться с вещами, а как продукт, который я тщательно создал. Поэтому я уделяю большое внимание визуальному дизайну и опыту пользователя этой системы. Чтобы выбрать цвета на всем сайте, я выбрал цвета темы поисковой системы Baidu, которые более узнаются публичными, красными и синими. На домашней странице используется красный и синий переход, и настраивает прозрачность. Он протягивается через CSS -код, который экономит время загрузки и дает пользователям хорошее визуальное воздействие. В то же время текстовое описание домашней страницы было добавлено в нижнюю тень и использует тонкие черные шрифты Microsoft, чтобы сделать визуальное чувство более многослойного. Поле поиска и предварительное просмотр изображения также увеличивают тень, а различные цвета и хроматические различия проводятся в важности поля предварительного просмотра. Это делает пользователя визуально освежающим и кратким, и может найти необходимую вам информацию как можно скорее. Затем он пройдет через простую страницу загрузки. Здесь производится круг ожидания, чтобы увеличить и выходить, чтобы пользователь не чувствовал себя раздраженным временем ожидания. В то же время он сообщает пользователю, что система системы выполняет расчеты и работает. При прыжке на страницу результатов распознавания все цвета текста и размеры шрифтов по -прежнему настраиваются в соответствии с важности копии, так что пользователю не нужно тратить слишком много времени на то, чтобы отфильтировать важную информацию. Планирование и выбор цвета двух кнопок также имеют тенденцию увеличивать желание и чувство щелчка, что побуждает пользователя выполнить следующую операцию. Для окончательной страницы результатов поиска я разработал ее в главу, похожую на книгу. Каждый список имеет различные регулировки цвета размера и размера шрифта на основе заголовка «Результаты поиска», «Сводка веб -страницы», «Время включения», вес, для увеличения визуального воздействия и распознавания. Это заставляет пользователей чувствовать, что у них есть некоторые общие черты с массовыми поисковыми системами, но они раскрывают некоторые из своих собственных личностей, предоставляя пользователям знакомый и новый опыт, а также сохраняют характеристики освежающей и безразличной и ненужной информации о помех. Кроме того, все визуальные дизайны сочетают в себе текущую концепцию адаптивного дизайна и имеют хороший пользовательский опыт и визуальные эффекты как на ПК, так и на мобильных устройствах.
** Написание шаблонов с использованием веточки: **
Передний опыт показан на рисунке ниже:
Он в основном основан на Bootstrap 3.4, может быть упакован с XDK/PhoneGap и скомпилирован в соответствующее приложение NA и опубликовано на рынке приложений. Мобильный опыт показан на рисунке ниже:
Спасибо всем учителям и всем одноклассникам, которые помогли мне в течение четырех лет обучения в колледже. Они научили меня профессиональным знаниям. За последние четыре года обучения и научных исследований, структура моих знаний, и способность научных исследований достигла нового уровня, но, что более важно, она интегрировалась в общество и дал мне полный опыт стажировки, что позволило мне испытать много опыта работы в интернет -компании, которые аспиранты не могут испытать в моей степени бакалавра. В мгновение ока, четыре года обучения в колледже подходят к концу. Когда я закончил этот диссертация выпускной с нервным настроением, я также переоделся от невежественного ребенка на зрелого молодого человека. То же самое - только пот не обманет вас. Наконец, слава Университету электронной науки и техники, всех, кого я встречал в университете, и благодарим себя за четыре года тяжелой работы.
https://github.com/daijiale/ocr_fontssearchengine.
http://v.youku.com/v_show/id_xmtyzndy2ndyxng==.html.