А что не так? Анализ и обработка данных в больших объёмах тут будет.
Машинное обучение?
Днем потестил тессеракт, на кириллице не алё:( Латиница практически без ошибок. Заморочился, хотя мне это пока не надо. А тут вона оно чё, файлик какой то
/usr/share/tesseract/tessdata/rus.traineddata
Скрипт из 3 строк:
По англицки (картинко)
результат
---добавил--
А у ТС сложней задача, мало кириллица, так еще и рукописный текст.
Sly32, решили- делайте. Если появится место где появится код, то буду периодически заглядывать, может какими глупостями тоже поделюсь🍻
А есть плагин для задачи ТС:D Ну, чтобы
А для "извращения", 3 строчки:
from PIL import Image import pytesseract print( pytesseract.image_to_string(Image.open('/home/media/images/1/1.png')) )
Работает☝ Правда, для кириллических текстов, вероятно, придется потанцевать с бубном вокруг самого тессеракта.
Сходу, не очень качественно получилось текст выдрать из картинки. Но, у меня (для центоса достаточно консервативны репозитарии:( Иногда, попариться приходится, чтобы что то посвежее поставить. Но, все решаемо )
Пакет tesseract-3.04.00-3.el7.x86_64 уже установлен, и это последняя версия. Пакет tesseract-langpack-rus-3.04.00-3.el7.noarch уже установлен, и это последняя версия. $ tesseract --version tesseract 3.04.00 leptonica-1.72 libgif 4.1.6(?) : libjpeg 6b (libjpeg-turbo 1.2.90) : libpng 1.5.13 : libtiff 4.0.3 : zlib 1.2.7 : libwebp 0.3.0
а там вроде 4 уже давно есть.
Так чта, последнее ваше предложение про крокодила, для данной задачи справедливо скорее для ВП
Систематизируем промежуточные результаты
обвес документа. Что надо? Есть ли необходимость в том, что все подборки должны быть тематически связаны с тайтлом.
Надо, предложены варианты:
Вопрос только - как это "прям вау" реализовать. За первые 2 варианта (на основе ...) 🍻
шаблоны вывода категорий/карточек - достаточно один на все или гибко, у каждой категории свой шаблон.
Ни да, ни нет никто не сказал:( Считаю надо. Для шаблона тайтла, говорят гибкость надо иметь. И, чтобы 2 раза не вставать - остальные тоже неплохо бы.
правило для "товар в разной категории"
Вопрос снят
правила формирования тайтл/дескрипшн
Надо, предложено:
Жду аргументированных возражений.
правила обработки 302/301. 1С обмен/xls и - сегодня товар есть, завтра нет, а послезавтра опять есть
Пока не затронуто. Считаю надо. Без редиректа, но, со ссылками на аналоги и лучше "прям вау:D
контент как шаблон.
Надо, уже есть:
множественный контент, контент это не только статья, а вставка кастомного контента в разные области документа
Пока не затронуто. Но, считаю надо.
---------
Предложения:
Нужно расшифровать понятие "подборка" :D ТЗ же. Ну типа - документ сгенерированый под определенный, нужный запрос. Который, отдаст результат поиска по базе товаров. Для которого, все выше и ниже перечисленные правила справедливы. Тайтл может быть из шаблона, если нет кописеорайтерского и т.д.
Каноникл - стандарт - надо. Для товарных (листинг, карточка) обвес сделает перелинковку. Если имеется в виду распределение весов - то пре/некст, в карточке, это как минимум больше одной ссылки на любую карточку. Если по умному, это скорее отдельная задача, частично решаемая тем же обвесом.
По мне так, сук для бизнеса дублей допускать не должна.
Чета, cms как то лучше звучит😂
Если я правильно понял идею.
Это не для директора, откуда он будет знать, что где то есть класс меню:D
А в целом задача поставлена верно, на мой взгляд. Гибкая сборка хтмл, на основе различных данных. Но, вот решение:( Есть хтмл шаблон, в котором есть метка "контент", которая заменяется на нечто, собранное по правилам из хмл-файла. Не буду разубеждать - зачем хранить в хмл, если есть варианты получше. Скажу лишь, а зачем лишняя сущность - хмл. Самого шаблона достаточно, если документацию по шаблонизаторам почитать
#Twig: {{ 2000 | price() | raw }} #Php: class TwigExtension extends \Twig_Extension { public function getFilters() { return array( new \Twig_Filter('price', array($this, 'formatPrice')) new \Twig_Filter('getComponent', array($this, 'cool_SNDL_method')) #...............
Ну или в задаче автора, что то типа
<body> Это содержание {{ "\\SNDL\\Menu" | getComponent() | raw }} </body>
Определив в TwigExtension getComponent
Методы парсинга XML известны, в результате, это в терминах пхп ассоциативный массив или string после XSLT обработки.
Если ТС метнулся к var_export, то скорее, массив.
А куда дальше придем, видимо позже посмотрим.
Но, не отнять, что ТС идеями фонтанирует. И эти идеи... Иногда, вполне себе норм.
А там он есть?
// заголовок для браузера ^ request(HTTPv)+" 200 OK"+>>; ^ "Content-Type: text/html"+>>; ^ "Charset: utf-8"+>>; ^ >>+>>;
рабочее. Что не факт, потому, что тут сказали 200, а пхп ничего не нашел и надо 404
И не для asp ли оно. Заметьте, не так
content-type: text/html; charset=UTF-8
а так
content-type: text/html сharset: utf-8
судя по
Попиарим как питон😎 чисто, как инструмент для хорошего сайта
Sly32, пхпшный бэкграунд большой, на все случаи жизни классы, функции отработанные годами есть. Так что, пока никак, приходится мириться с зоопарком :(
А в целом, скорее да, скрипач php не нужен, чем нужен. Я это понял, решая одну задачу. Спарсить документ и определенным образом обработать. Парсеры на пхп у меня норм, ответ сервера без указания кодировки их не обманет. Но вот незадача, данные нужно питоном обработать. Глупо получать их с помощью пхп, а обрабатывать питон-скриптом. А что там, питон умеет парсить хтмл? Еще как умеет.
soup = bs4.BeautifulSoup( html, 'lxml', from_encoding=encoding ) for t in soup.findAll( text=True ): if self.tag_visible( t )==True:
Куда проще все и элегантней. А учитывая простоту асинхронной работы
with concurrent.futures.ThreadPoolExecutor( max_workers=len(self.urls) ) as executor: url_parsed = { executor.submit( self.delivery, url ): url for url in self.urls }
Вообще - песня☝
Я еще не дорос, в рамках задачи (банальное апи - что то сделать и отдать json в зависимости от запроса) пока достаточно
from flask import Flask from flask_restful import Resource, Api #.....
В том то и дело, что реализовать можно многое. По морфологии, я бы добавил mystem, как вариант. А для себя, после долгих раздумий, остановился на pymorphy2, тем более для
и некоторых других задач пригодился Gensim, для которого тоже нужна лемматизация. Поэтому, пришлось смириться с увеличением зоопарка.
Но, это детали реализации и не так важны для этой темы. Главное, что реализовать можно почти все. При этом, лучше понимать, что необходимо, а что "и даром не нать, и за деньги не нать"
Еще один вопрос, который неизбежно встанет - это юзабельность. Почему, крутая сео-контора решает вопрос статичного тайтла/Н1 и т.д. простым способом:
<?php /* Оптимизаторский файл. */
возможно, потому что искать и менять в админке сео-параметры 10-20-50-100500 урлов не очень удобно. Поэтому, для себя, решил, что edit-in-place всего, что касается документа - от контента и до сео-параметров.
Отличная реализация, кое что стырю:)
tpl_nN Имя чанка, выступающего в качестве шаблона для каждого N-ного ресурса, например шаблон &tpl_n4=`tpl4th` будет применен к каждому элементу, порядковый номер которого кратен 4
Не совсем понял, но "Продажа слоны в Москва" проигрывает "Продажа слонов в Москве". У меня пока не получилось, придумать ничего лучшего для тайтла/h1, чем:
Шаблон д/б с морфологией.
Это да, т.е статья это тоже шаблон. И там может быть примерно так:
съешь ещё этих {{ name | morph(gent) }}, да {{ relevance_one | morph(accs) }}, а может наберешь {{ phone }} и все организуем?
Механизм? Тут можно 2 компоненты выделить - распределение веса и заманчивость. Если страница "слоны", то ссылка на "тапочки" передает вес. Но, зачем тому, кто покупает слона, тапочки. Т.е. ссылки должны заинтересовать как минимум, а в идеале и заставить купить это.
Расходимся?
Само собой. Но, инструменты должны быть предусмотрены. К примеру, то что кастомные тайтл, h1 и т.п. для карточки/категории нужны, можно легко понять, посмотрев вот это
<?php /* Оптимизаторский файл. */ //Глобальные значения (по умолчанию) $aSEOData['title'] = ''; $aSEOData['descr'] = ''; $aSEOData['keywr'] = ''; $aSEOData['h1'] = ''; //Определяем адрес (REQUEST_URI есть не всегда) $sSEOUrl = $_SERVER['REQUEST_URI']; //Собственно вариации для страниц switch ($sSEOUrl) { case урл: // Добавлено 19 June 2017 в 13:58 $aSEOData['title'] = что-то; $aSEOData['descr'] = что-то; $aSEOData['keywr'] = что-то; $aSEOData['h1'] = что-то;
Палю - скриптик, который инклюдила (лет несколько назад) одна крутая сео контора на букву "Д". И который - регулярками менял из ob_get_contents то что есть $aSEOData. И ob_end_flush().
Если сайт продвигается, вменяемыми специалистами, то, думаю, кривизна такого сайта выправлена, а убогость минимизирована.