• Можно ли как-то огранчить opencv по поиску объектов на изображении?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Да просто обрежьте картинку перед тем как отдать opencv и все.

    Дополню.
    Конечно обрезать надо не вручную, а той же самой opencv.
    Ок, таблица может быть где угодно, но внешняя рамка-то всегда на своем месте?
    Вообще не очень ясно что там у вас за PDF-ки. Если такие как в примере ровненькие и с одинаковыми полями, да рамочкой по ГОСТу, то просто кропайте картинку по этой рамке и все.
    Если поля плавают по размерам, то придётся искать границы и кропать по ним.
    Самое неудобное - это когда у вас сканы или фото документов, и они чуть под разными углами и искажены. Но в целом задача хоть и усложняется, но остается прежней.
    Можно найти вертикальные линии и взять самую длинную из самых левых - это левая граница рамки. С остальными так же.
    Обрезайте рамку полностью с небольшим запасом, потом ищите координаты таблицы, пересчитываете их в координаты на необрезанной картинке, добавляете с нужной стороны (в зависимости от того, с какой стороны у вас нашлась таблица) и снова вырезаете из оригинального изображения.

    И да, ненужные таблицы, особенно те, которые всегда на своем месте, можно перед поиском таблиц замазать белым прямоугольником с небольшим запасом. Но вырезать искомую таблицу надо по координатам с оригинала, чтобы края были корректными.
    Ответ написан
    7 комментариев
  • Как решить ошибку при установке Mysqlclient в pycharm?

    @Andy_U
    На pypi.org как видно, wheel-файлы существуют лишь для 64-bit Python'а. У вас 32-bit Python... Установите 64-bit с сайта python.org, переходите на него и не мучайтесь.

    Или тут инструкцию прочитайте.
    Ответ написан
    Комментировать
  • Какой тариф выбрать при размещении django проекта?

    solotony
    @solotony
    покоряю пик Балмера
    я размещаю простые сайты django на бегете - все подымается без проблем
    работает на всех тарифах
    Ответ написан
    Комментировать
  • Как оптимизировать запрос sqlite datetime для postgresSQL date?

    @galaxy
    Текущее время - now()
    date_trunc() - округление даты
    -- date('now', 'start of day')
    date_trunc('day', now())
    
    -- date('now', 'start of month')
    date_trunc('month', now())
    
    -- date('now', '-6 days')
    now() - INTERVAL '6 days'
    Ответ написан
    Комментировать
  • Как оптимизировать запрос sqlite datetime для postgresSQL date?

    Melkij
    @Melkij
    PostgreSQL DBA
    select current_date,
    current_date - interval '6 day',
    date_trunc('month', now()),
    now();

    Просто другой набор функций, выберите подходящую.
    Ответ написан
    4 комментария
  • Почему PostdgreSQL постоянно выдает ошибку AttributeError: 'NoneType' object has no attribute 'fetchall'?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Данные не возвращаются в вашу переменную. Они лежат в курсоре.

    def client_exists(self, user_id):
            """Проверяем есть ли клиент уже в базе данных"""
            self.cursor.execute("""SELECT * FROM clients WHERE user_id = %s""", (user_id,))
            return bool(len(self.cursor.fetchall()))


    И можно сделать немного вот так (если не путаю):

    def client_exists(self, user_id):
            """Проверяем есть ли клиент уже в базе данных"""
            self.cursor.execute("""SELECT * FROM clients WHERE user_id = %s""", (user_id,))
            return self.cursor.fetchone() is not None
    Ответ написан
    1 комментарий
  • Почему PostdgreSQL постоянно выдает ошибку AttributeError: 'NoneType' object has no attribute 'fetchall'?

    Vindicar
    @Vindicar
    RTFM!
    Я полагаю, есть два способа сигнализации о пустом ответе, и разные движки используют разные подходы.
    Либо БД может вернуть объект-курсор, который не содержит ни одной строки.
    Либо БД может вернуть None.

    Для понятности такая аналогия: пусть нам возвращают список. Если нам всегда возвращают список, то можем писать код так:
    for line in db.query("..."):
        do_something(line)

    Сработает даже еслди в ответе нет ни одной строки, т.е. на пустом списке.
    А вот если нам при пустом ответе возвращают None, то код выше вылетит с ошибкой NoneType is not iterable, и надо будет переписать так:
    result = db.query("...")
    if result is not None:
        for line in result:
            do_something(line)
    Ответ написан
    1 комментарий
  • Можно ли получить id сообщения от бота (telegram)?

    InternetMaster
    @InternetMaster
    Интернет
    Если у вас есть id сообщения, то вы можете без проблем найти отправленное сообщение полностью!
    Суть в том, что вы используете forwardMessage

    await bot.forward_message(chat_id=<чат id КУДА ПЕРЕСЛАТЬ СООБЩЕНИЕ>, from_chat_id=<чат id ГДЕ БЫЛО ОТПРАВЛЕНО СООБЩЕНИЕ>, message_id<id сообщения>)


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

    P.S. конечно, надо будет знать message_id сообщения где находится статус заказа, но message_id можно записывать во время отправки сообщения. В случае успеха (то есть если сообщение бот сможет отправить) он вернет Message. Для получения текста - message.text

    P.S.S. Этот метод ещё можно использовать для человеко-читаемого формата. То есть если кто-то будет стоять физически, например за пунктом выдачи заказов, то можно в chat_id передать chat_id работяги который выдает заказы, и ему уже придёт сообщение такое же как и пользователю.
    Ответ написан
  • Можно ли получить id сообщения от бота (telegram)?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Нельзя найти сообщение по ID. Если имеется в виду получение сообщения как в вашем коде, то
    message_id=query.message.message_id
    Ответ написан
    3 комментария
  • Как на Python Сделать свою сортировку?

    aRegius
    @aRegius
    Python Enthusiast
    Добрый день, Олег.

    Свою сортировку, реально, можно делать как угодно, в зависимости от задачи: и sort(), и sorted(), и слайсы, и пр. Что касается вашего конкретного примера с картами, вот, например, простой вариант:
    >>> symbols_start = '23456789TJQKA'
    >>> symbols_heap = 'A926K'
    >>> symbols_heap_sort = ''.join(i for i in symbols_start if i in symbols_heap)
    >>> symbols_heap_sort
    '269KA'
    Ответ написан
    4 комментария