Задать вопрос
  • Как получить файл .csv из .png?

    @karmoed Автор вопроса
    Для тех, кто тоже ищет ответ, публикую сам. Спасибо Василий Банников Василий Банников за то, что посоветовал разобраться с тессерактом. Похоже, что это единственный рабочий вариант.

    Тессеракт установить легче, чем я описал в вопросе. Качать отсюда, иначе можно пару часов пытаться решить разного рода проблемы. ..
    Так же нужно добавить "tessdata" в переменные среды ОС. При установке выбрать русский язык в качестве пакета.

    Установить через CMD:
    pip install pytesseract pillow
    pip install opencv-python


    После пары часов пыток ChatGpt я всё таки смог получить очень прекрасный пример кода. До этого я в сумме потратил часов 8 на то, чтобы организовать символы в фотошопе так, чтобы тессеракт хорошо их распознавал. Мне нужно было распознать и кириллицу и латиницу, так что я делал это в 2 подхода. В примере ниже сразу обрабатывается и кириллица и латиница

    Иногда ChatGpt приводит примеры с "image_to_data", иногда с "image_to_boxes". Хоть сперва Чат утверждает, что image_to_data":


    image_to_data возвращает более подробный результат распознавания, включающий координаты границ каждого слова, линию на которой находится это слово, уровень уверенности в правильности распознавания и другие метаданные, а image_to_boxes возвращает только координаты границ каждого символа на изображении.


    Это не так. На практике всё же приходим к этому выводу:

    image_to_data возвращает данные о распознанных строках и словах, а не о каждом символе, как это делает image_to_boxes.

    image_to_data - определяет строки, а image_to_boxes - каждый символ, поэтому используйте только последний метод

    Как сообщил ChatGpt - он выхватывает готовые решения из инета. Я перепробовал пару десятков... Добиться адекватного значения высоты не удалось, потому что для её определения ChatGpt даёт мне примеры с image_to_data, а это не подходит для распознавания каждого символа. Но хоть добился хоть какого-то определения ширины и игрека, похожих на правду.

    Скрипт для запуска (пример от ChatGpt):

    import pytesseract
    import cv2
    
    # установить путь к файлу tesseract.exe (если это необходимо)
    pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
    
    img = cv2.imread(ПУТЬ_ИМЯ_ИЗОБРАЖЕНИЯ)
    
    # преобразовать изображение в серое
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    # распознать каждый символ на изображении
    boxes = pytesseract.image_to_boxes(gray, lang='rus+eng') # кириллица + латиница 
    
    
    # распознать каждый символ на изображении
    boxes = pytesseract.image_to_boxes(gray, lang='rus+eng')
    
    
    # нарисовать прямоугольники вокруг символов на изображении
    for b in boxes.splitlines():
        b = b.split(' ')
        x, y, w, h = int(b[1]), int(b[2]), int(b[3]), int(b[4])
    
        h_real = img.shape[0] - y - h # вычисляем реальную высоту символа
        cv2.rectangle(img, (x, img.shape[0]-y), (w, img.shape[0]-h), (0, 0, 255), 1)
    
        print(f"Символ: {b[0]}, X: {x}, Y: {img.shape[0]-h}, Ширина: {w - x}")
    
    
    # сохранить результат в файл
    cv2.imwrite('result.png', img)


    Вот как это выглядит:
    spoiler

    641f5a58c2c22139155286.png

    Но этот пример изображения основан на отредактированном в фотошопе (ушло несколько часов) таким образом, чтобы он адекватно распознавался в более простом примере. Сперва распознавал латиницу, затем кириллицу. Сейчас распознаются оба языка. Обратите внимание на отступы между символами - иногда нужно его увеличивать или уменьшать. Так же часто приходится менять символы (не буквы) местами, чтобы они адекватно определялись и не сливались в одно целое.

    Так что не рассчитывайте, что сразу получите результат как в моём примере, возможно придётся экспериментировать.

    Так же вам может пригодиться словарь со всеми нужными ID и символами. В ответ не влезает (более 10к символов), так что словарь и пример вывода в консоль результата данных, на основе изображения выше (оно под спойлером), напишу в отдельном комментарии ниже.
    Ответ написан
    1 комментарий
  • Как правильно компилировать на с++?

    1. Для корректной работы необходимо собирать программы в release версии. Сейчас вы собираете в debug версии (суффикс D в имени VCRRUNTIME140D.dll на это намекает).
    2. Для корректной работы требуется установить пакет vc-runtime (при динамической линковке рантайма). Если же vc-runtime линковать статически к exe файлу, то его ставить не нужно и программу можно безболезненно переносить между компьютерами.
    3. Для решения проблем, когда на целевом компьютере отсутствуют библиотеки, люди изобрели инсталяторы, котрые эти библиотеки доустанавливают.
    Ответ написан
    Комментировать
  • Почему часто вылетает капча?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    хрестоматийный случай

    вы поставили VPN
    "бесплатный"
    с андроид маркета

    тепреь платите за него прогоном трафика через себя

    вот прямо сейчас, в Maxton нажимаю, типа есть как в Опере, и там

    To use BrightVPN, you are allowing Bright Data to occasionally use your device’s free resources and IP address to download public web data from the Internet. Bright Data values your trust and takes every measure possible to protect your privacy and personal data. Bright Data understands the security matters at stake in sharing your IP address and monitors all of its network traffic to ensure your safety. Bright Data will only use your IP address for approved business-related use cases and never for unauthorized cases. None of your personal information is accessed or collected except your IP address. Period.

    что может быть более яснее-то? им нужен твой IP, одежда и мотоцикл
    Ответ написан
    2 комментария
  • Способ получения ФИО через номер телефона или соц сети?

    @newPsevdonim
    Python разработчик
    Использовать сервисы по типу get contact в надежде что кто записал полное имя пользователя. Вроде бы даже есть питоновская библиотека, которая позволяет использовать их бд.
    Ответ написан
    Комментировать
  • Способ получения ФИО через номер телефона или соц сети?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Поскольку это сбор сведений на людей то легального способа скорее всего нет. А если он появляется
    его быстро закрывают. Государство и правозащитники здесь вобщем-то едины. Такие базы не должны
    быть открытыми никогда.

    Базы для "пробива" предположительно лежат во всяких Даркнетах но я ХЗ... не видел никогда.
    Ответ написан
    Комментировать
  • Есть ли копирайт (авторское право) на названия игр?

    @mletov
    Как уже выше написали, лучше обратитесь к юристам.

    Не стоит пытаться программисткой формальной логикой осмыслить юридические моменты. Очень часто при рассмотрении таких дел проверяют не формальную сторону вопроса, ну или не только ее, а еще и мотивацию и положение дел на рынке, почему именно так назвали игру.

    Использовали две компании какое-то слово/выражение в названии игры, но при этом слово/выражение общеупотребимое, а игры ничего общего друг с другом по жанру и по аудитории не имеют - могут и не найти нарушения.
    И наоборот, если игры одной тематики, а первая игра имеет высокую популярность - налицо попытка паразитировать на чужом успехе.

    А еще "Тетрисы" и "Змейки" все подряд пишут и никто друг с другом не судится за название.

    Кроме юриста по авторскому праву вам никто не поможет.
    Ответ написан
    Комментировать
  • Есть ли копирайт (авторское право) на названия игр?

    Jacen11
    @Jacen11
    с таким к юристам идти нужно. Еще от страны зависит, куча тонкостей. Например общеупотребительное слово нельзя запатентовать. Но некоторые корпорации умудрялись сделать это.

    "оригинальное название + что-то своë"
    ну как бы можно. А потом придет повестка и будете все менять, потому что судиться просто дорого.
    Ответ написан
    Комментировать
  • Почему Yii2 HttpClient не отправляет заголовки с именами в snake_case?

    @pantsarny
    underscores_in_headers on;
    Nginx
    Ответ написан
    Комментировать
  • В какой ВУЗ лучше поступать для изучения ИБ?

    @kalapanga
    Вы уж определитесь - "для изучения ИБ" или "будущему пентестеру".
    Иначе в процессе обучения можете здорово разочароваться. На специальности 10.03.01 "Информационная безопасность" (в зависимости от профиля) так называемого "пентестинга" либо может не быть вообще, либо это может быть например одна дисциплина на 1-2 семестра.
    Ответ написан
    Комментировать
  • Какой процент распознавания точности артикула штучного товара на витрине по его внешнему виду считается "хорошим" а какой - "отличным"?

    Maksim_64
    @Maksim_64
    ML Engineer
    Хороший или отличный процент точности в контексте данной проблемы будет определятся бизнесом (при помощи специалистов разумеется). То есть "Приносит ли прибыль модель распознавания". Он же бизнес (опять же при помощи специалистов) установит порог для точности и ИНТЕРВАЛ (процент будет в интервале). при котором данная модель прибыльна.

    То есть точность модели это не некий уровень по индустрии, а бизнес вопрос при какой точности модели для бизнеса начинается выгода от применения.
    Ответ написан
    4 комментария
  • Как сжать базу данных в mongodb?

    saboteur_kiev
    @saboteur_kiev Куратор тега Ubuntu
    software engineer
    можно чистить коллекции командой compact, может немного просесть перформанс, поэтому лучше выбрать время когда поменьше нагрузки

    коннектишься к монге, выбираешь базу, выбираешь коллекцию и вперед

    use mybase
    db.runCommand( { compact: "mycollectionname" })
    Ответ написан
    Комментировать
  • Можно ли лезть в ИБ с python?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    можно

    зеродей без си, конечно, не очень поймется
    но си все равно никогда не поймется - понимай по ходу в пределах нужного

    остальное Питон справится
    Ответ написан
    2 комментария
  • Чем меньше символов, пробелов и пропусков в коде, тем лучше?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Неправильно.
    Названия переменных и функций должны быть говорящими, чтобы их назначение сразу было понятно. Урезать названия до пары символов, лишь бы было покороче, - очень плохо.
    По пробелам, пустым строкам, отступам и пр. есть стайлгайды - рекомендации по оформлению кода. Например, PSR-1 и PSR-12 для PHP, Google Style Guide и Airbnb Style Guide для JS. В компании может быть принят и какой-то свой стайлгайд.
    Ответ написан
    Комментировать
  • Чем меньше символов, пробелов и пропусков в коде, тем лучше?

    Не правильно.

    Код должен быть читаем и понятен человеку. Причем, не только автору, но и «злому маньяку тим-лиду, который вооружен и знает, где вы живёте», как говорится в шутке программистов.
    Для этого пустые строки между блоками кода бывают полезны. Как и комментарии, и длинные осмысленные наименования переменных и фукций.
    Компилятор потом всё равно всё перелопатит по-своему в ацкие бинарные инструкции )

    Как форматировать код — договариваются. Есть общепринятые стандарты форматирования кода (coding style). Например, стандартный для PHP. Или принятый в компании AirBnB для JavaScript.

    Хороший-удобный редактор кода всегда подскажет, где накосячили со стилем вашего кода, почему, и как исправить.
    Ответ написан
    Комментировать
  • Надо ли формировать ЧПУ на языке пользователя сайта?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Насколько эт целесообразно для SEO

    По моим наблюдения, эффективность ранжирования увеличивается на - 0%.
    Латиница в яндексе и гугле работает замечательно, а вот киррилица (и вероятно, эстонский) при расшаривание ссылки выдаст замечательный набор символов //сайт.рф/категория-товара/товар > //xn--80aswg.xn--p1ai/%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B0/%D1%82%D0%BE%D0%B2%D0%B0%D1%80 .
    Ответ написан
    Комментировать
  • Почему часы показывают на два часа раньше моего часового пояса в жс?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    Писать самому дату создания записи в БД, если на то нет веских причин, не следует. Тем более хранить время и дату текстом не стоит. Для этого во всех БД есть специальные типы данных.
    Рекомендую ознакомиться с документацией к используемой БД, в частности с типами для хранения данных.
    Ответ написан
    Комментировать
  • В портфолио годятся только коммерческие проекты?

    @Drno
    любые, которые ты посчитаешь нужным показать. и которые могут помочь работодателю выбрать именно тебя
    Ответ написан
    Комментировать
  • Есть ли флаг компиляции gcc, чтобы неявное приведение типов выводилась как ошибка?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    -Wconversion -Warith-conversion
    Ответ написан
    Комментировать
  • Что за стиль дизайна(графики) в игре Botanicula?

    pozZzitiv
    @pozZzitiv Куратор тега Дизайн
    Дизайнер и перфекционист
    У него нет какого-то определенного названия.
    Детские рисунки, doodle, раскрашенные и наполненные дыханием.
    Ответ написан
    Комментировать
  • Откуда программа должна знать id для поиска обьекта c его помощью?

    @Vitsliputsli
    Именно поэтому поиск в бд возможен не только по id, но и по любому другому полю. Да и id необязательно суррогатен, он может быть натуральным, т.е. отображать идентификатор из реальной жизни.
    Ответ написан
    2 комментария