Распознавание паспорта РФ. Python+1С без сторонних сервисов

06.02.23

Интеграция - Распознавание документов и образов

В данной публикации мы рассмотрим методы разработки приложений на Python + 1С для распознавания Паспорта РФ.

Скачать файлы

Наименование Файл Версия Размер
Модули Python для Распознавания паспорта РФ. Python+1С
.rar 90,71Mb
31
.rar 90,71Mb 31 Скачать
Внешний отчет обработка 1С 8.3 для Распознавания паспорта РФ. тестировалось на Платформе 8.3.22.1750
.epf 7,08Kb
20
.epf 7,08Kb 20 Скачать
Тестовый Паспорт РФ в формате jpg
.jpg 104,90Kb
7
.jpg 104,90Kb 7 Скачать

Погуглив просторы интернета, я нашел подобные решения для 1С. Но все эти разработки требуют пересылку данных на сторонние ресурсы. А передача персональных данных на сторону не такая уж хорошая идея, ведущая к нарушением законов РФ (персональные данные и т.п.).

И таки решил написать такое решение, которое будет работать на вашем ПК (серверах) без всяких там сторонних сервисов. Но так как Python так же, как и 1С, язык программирования некопилированный, то решение подобной задачи стало не такой уж и простой, но вполне решаемой.

В качестве основы был позаимствован репозитарий paSport_eye на GiHub. Данный продукт был адаптирован под Windows и 1С

Данная болванка очень простая, но при этом использует такие библиотеки, как Dlib и CV2, которые довольно-таки хорошо себя показали в распознавании лиц и изображений.

В качестве распознавателя мы используем бесплатный и самый на мой взгляд мощный продукт по распознаванию текста "pytesseract" от компании HP.

Итак, начнем: 

1. Для начала установим Python.

Рекомендую ставить версию 3.9, так как с другими версиями могут возникнуть сложности по установке библиотек. 

2.Далее открываем командную строку и входим в папку, куда вы установили Python, к примеру 

cd c:\pyhton

3. Устанавливаем библиотеки

  1. Библиотека OpenCV 
    python -m pip install opencv-python
  2. Библиотека Pillow 
    python -m pip install Pillow
  3. Библиотека pytesseract
    python -m pip install pytesseract
  4.  Библиотека rembg
    python -m pip install rembg
  5. Библиотека imutils
    python -m pip install imutils
  6. Библиотека matplotlib
    python -m pip install matplotlib
  7. Библиотека dlib Так как версии выше 22 автоматически устанавливают библиотеки куда, а после чего надо долго танцевать с бубнами и установкой библиотек Cuda - рекомендую ставить версию 19.22.1
    python -m pip install -U dlib==19.22.1
  8. Библиотека tesseract-ocr   
    pip install pytesseract
         

4. Далее ставим программный продукт Tesseract. Он необходим для распознавания текста. 

Данный продукт распространяется в открытом коде и собрать его под linux очень просто. Но нам нужна Windiws сборка и скомпилить+зарелизить его под Виндовоз не так уж и просто. Поэтому воспользуемся сборкой для win64 от немецких коллег из Мангеймского университета. Ссылка тут - Tesseract-ocr-w64-setup-5.3.0.20221.

1. Установку нужно делать на диск "С:" в папку %Program Files% (по умолчанию). Если сменить папку - то придется допиливать один Python модуль.

2. Необходимо выбрать расширенную установку и выбрать дополнительный набор Кириллических символов  для распознавания русского языка. 

Поздравляю, у вас теперь установлен прокачанный Python.

Как установить ПО 1С8, думаю, рассказывать не буду и пойдем дальше.

Скачиваем Python модули и разархивируем их, к примеру, в Папку c:\Python\Passp.

Сам архив полностью с открытым кодом(openSource)  имеет основной файл passport.py и библиотеки в папке Lib.

Так же вспомогательные файлы для машинного обучения.

 

 

Давайте рассмотрим файл passport.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
import cv2
import argparse
import os
from lib.output import OUTput
from lib.rm_bg import RemoveBG
from lib.face_work import FaceWork
from lib.text_recognition import TessRecogn
from lib.search_data_with_cv2 import SDWCV2
from lib.script_return_abs_path import ReturnAbsPathPict
from lib.script_convert_image import ReturnPathConvertImage

def main():
    ap = ap = argparse.ArgumentParser(
                                        prog="python3 pasport_eye.py",
                                        usage="%(prog)s -p /ПУТЬ/К/ПАПКЕ/С/ИЗОБРАЖЕНИЯМИ --improved_recognition ON или OFF -o terminal или scv",
                                        description='''
                                                        
    )
    ap.add_argument(
                    "-p", "--path_pict", required=True,
                    help="Путь к каталогу изображений паспортов!"
    )
    ap.add_argument(
                    "--improved_recognition", required=True,
                    help='''
                            Метод улучшенного распознования: ON или OFF.
                            ON - более точное распознавание, но и "выхлоп" от
                            скрипта более "жирный", так же, медленная работа скрипта.
                            OFF - все как обычно, но возможно, не точное распознавание.
                    '''
    )
    ap.add_argument(
                    "-o", "--output", required = True,
                    help = '''

                    Метод выполнения скрипта: trminal или csv.
                    terminal - создается папка: название_базы + _recogn,
                    в ней подпапка pict - лица из паспортов
                    и подпапка descript - дескрипторы в двоичном формате,
                    выхлоп распознования - в терминал.

                    csv - дескрипторы(в формате: float), изображение лиц(в формате: base64),
                    а так же данные паспортов сохраняются в НАЗВАНИЕ_БАЗЫ_С_ИЗОБРАЖЕНИЯМИ.csv
                    '''
    )
    ap.add_argument(
                    "-f", "--output_file", required=True,
                    help="путь к результирующему файлу"
    )
    
    args = vars(ap.parse_args())
    
    if str(args["improved_recognition"]).lower() == "on" or str(args["improved_recognition"]).lower() == "off":
        improved_recognition = str(args["improved_recognition"]).lower()
    else:
        print("improved_recognition только ON или OFF\nВыход!")
        sys.exit()

    if str(args["output"]).lower() == "terminal" or str(args["output"]).lower() == "csv":
        output = str(args["output"]).lower()
    else:
        print("output только terminal или csv\nВыход!")
        sys.exit()


    # получаем правильный путь к файлам с точки срения python
    path_pict=os.path.abspath(str(args["path_pict"]).lower())
    abs_path_folder, filename = os.path.split(path_pict)
    list_abs_path_folder = ReturnAbsPathPict().main(abs_path_folder)

    folder = f"{path_pict}"
    abs_path_pict = os.path.abspath(folder)


    path_output = os.path.abspath(str(args["output_file"]).lower())
    #print(abs_path_pict)
    #print(list_abs_path_folder)
    

    print(f"Идет распознование изображения: {abs_path_pict}\n")
    # возврат полного пути + конвертация изображения в .png
    path_cache_pict = ReturnPathConvertImage(abs_path_pict).main(abs_path_pict,list_abs_path_folder)
    # возврат полного пути + удаление заднего плана
    #path_pict_no_bg = RemoveBG(path_cache_pict, visualization=False).main()
    path_pict_no_bg = path_cache_pict

    # возврат словаря с данными(изображение без фото лица, само фото лица) + дескрипторы лица
    dict_image_no_face_and_cropped_face = FaceWork(path_pict_no_bg, visualization=False).main()
    # возврат списка выделенных данных с помощью cv2
    data_list_gorizontal, data_list_vertical = SDWCV2(dict_image_no_face_and_cropped_face, visualization=False).main()
    # возврат списка распознанных с помощью tesseract данных
    list_all_data_gorizontal, list_all_data_vertical = TessRecogn(
                                                                        improved_recognition,
                                                                        data_list_gorizontal,
                                                                        data_list_vertical
        ).main()

    OUTput(
                args,
                output,
                path_output,
                dict_image_no_face_and_cropped_face,
                list_all_data_gorizontal,
                list_all_data_vertical
        ).main()

if __name__ == "__main__":
    main()

Тут, думаю, все понятно:

1. модуль python получает необходимые аргументы - входные данные (изображение и название выходного файла и т.п.), которые нам понадобятся для вызова из 1С.

2. Конвертируем фото в png и меняем размер. 

3. Далее распознаем лицо, используя библиотеки Open CV и Dlib на фото, для того чтобы правильно перевернуть фото. 

4. После чего по заранее известным координатам получаем обрезки рисунков с необходимыми нам текстами.

5. Далее распознаем текст и выводим его в CSV файл.   Easy ;-)

Ну что же, осталось подружить все это добро с 1С.

Пишем обработку на 1С.  Тестировалось на Платформе 8.3.22.1750


&НаКлиенте
Процедура Распознать(Команда)
	объект.ИмяВыходногофайла= "C:/python/paasport/output" + СокрЛП(Новый УникальныйИдентификатор())+".csv";
	КомандаСистемы("C:\Python39\python C:\python\paasport\passport.py --p """+объект.Паспорт+""" --improved_recognition=off -o=csv -f="""+объект.ИмяВыходногофайла+"""","C:\python\paasport\"); 
	Ожидание();
КонецПроцедуры

&НаКлиенте
Процедура Ожидание()
	МойФайл = Новый Файл(объект.ИмяВыходногофайла);
	
	Если НЕ МойФайл.Существует() Тогда 
		ПодключитьОбработчикОжидания("Ожидание",1);
	иначе                                         
		Текст = Новый ЧтениеТекста;
		Текст.Открыть(объект.ИмяВыходногофайла);              
		Строка = Текст.ПрочитатьСтроку();
		объект.данныеПаспорта= Строка;
		ОтключитьОбработчикОжидания("Ожидание");

	КонецЕсли;	
КонецПроцедуры	

В итоге получаем неплохой результат.

 

Все получилось...

См. также

SALE! 30%

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания ЛЮБЫХ СКАНОВ ИЛИ ФОТО ТОВАРНЫХ ДОКУМЕНТОВ в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML и т.д.) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

5400 4968 руб.

04.06.2019    97894    285    173    

296

Распознавание документов в "1С:Предприятие 8.3": расширение для типовых конфигураций.

Учет документов Распознавание документов и образов Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Расширение для типовых конфигурация и для самостоятельной интеграции системы распознавания документо удостоверяющих личность и прочих документов непосредственно из информационных баз "1С:Предприятия 8.3" с помощью Content AI - Passport Reader SDK. Расширение позволит не изменяя типовой код конфигурации, расширить текущий функционал несколькими кликами мыши.

12000 руб.

26.01.2016    68384    77    0    

100

SALE! 35%

Когда много сканов: Автоматическое прикрепление сканированных документов

Учет документов Распознавание документов и образов Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Обработка экономит время, распознавая и прикрепляя сканированные оригиналы документов к документам в 1С. Поддерживаются штрихкоды, QR-коды и оптическое распознавание PDF документов.

5040 3276 руб.

23.12.2021    11380    3    23    

5

Полностью голосовое управление учетной системой. Вести из лаборатории

Нейросети Мессенджеры и боты Распознавание документов и образов Бесплатно (free)

Под голосовым вводом я понимаю не просто проговаривание в микрофон заранее запрограммированных команд. А настоящий голосовой ввод. Когда пользователь говорит, что ему нужно в свободном формате, на естественном языке. Можно ли сделать на этом полноценную учетную систему? Telegram, API и немного магии (GPT).

27.09.2023    1128    mkalimulin    14    

13

Распознавание номеров автомашин с ip - камер, видео, фото

Периферийные устройства Распознавание документов и образов Автомобили, автосервисы Россия Платные (руб)

Программа считывает кадры с ip-камер (http - запрос к камере), видео, фото (источники кадров (нет ограничения на их количество) настраивается в конфигурационном файле), находит и распознает номера автомашин и сохраняет в базу db, с сохранением фото номера и автомашины, а также времени детекции.

20400 руб.

31.05.2023    3285    1    1    

2

Улучшенное распознавание плательщиков для 1С Учет в управляющих компаниях ЖКХ,ТСЖ и ЖСК

Банковские операции Распознавание документов и образов Платформа 1С v8.3 Конфигурации 1cv8 Энергетика и ЖКХ Россия Бухгалтерский учет Платные (руб)

Как упростить жизнь бухгалтеру ЖКХ при разнесении оплат из Сбербанка и других банков? Мы создали специальное расширение, которое поможет быстрее обрабатывать платежи. Больше не нужно руками искать собственника лицевого счета, программа сделает это за вас: определит по назначению платежа плательщика и договор по лицевому счету, указанному в назначении платежа.

9000 руб.

21.12.2022    5450    0    2    

2

Робот-загрузчик и архив документов. Распознавание/загрузка сканов документов в 1С8(7.7), архив сканированных документов.

Файловый обмен (TXT, XML, DBF), FTP Учет документов Распознавание документов и образов Платформа 1С v7.7 Платформа 1С v8.3 Платформа 1C v8.2 Конфигурации 1cv8 Конфигурации 1cv7 Россия Платные (руб)

Программный комплекс способный распознавать сотни листов за раз любых сканированных(фото) документов (УПД, ТОРГ12, СФ, паспорт и пр.) и загружать их в любую 1С (БП3.0, УТ, КА, УНФ, УПП, 1С7.7 ТиС, ЗУП3 и пр.), а также формировать архив сканированных документов.<br> Робот применяет до 5 способов распознавания. Максимальное качество загрузки документов из бесплатных OCR. Работает без Интернета.

10800 руб.

13.10.2022    7523    1    12    

8
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. starik-2005 2898 30.01.23 11:37 Сейчас в теме
Отлично! Только вот нафига каждый раз команду системы дергать? Сделайте в виде сервиса - три строки дописать. И пусть 1С дергает урлу с токеном по SSL.
kuzyara; Indgo; Sedaiko; gzharkoj; Nefilimus; nvv1970; +6 Ответить
3. Indgo 327 30.01.23 11:53 Сейчас в теме
(1)
команду системы дергать? Сделайте в виде сервиса - три строки дописать. И пусть 1С дергает урлу с токеном по SSL.

Да согласен.
Те кто хочет получать данные не через файл а через веб сервис допиливаем модуль python
from flask import Flask
app = Flask(__name__)

@app.route("/<данные картинки в формате dbase64>", methods=['GET'])
def index(username):
#тут можно вываливать распознанные паспорнтые данные
    return "Hello, %s!" % username 

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=4567)
Показать

Теперь из 1с можно получать данные через http запрос из http://localhost:4567/{jpeg картинка в формате dbase64}
JohnyDeath; fancy; German; Sedaiko; sapervodichka; starik-2005; +6 Ответить
13. dsdred 2808 01.02.23 07:44 Сейчас в теме
(3)такие вещи лучше через POST передавать.

А статья отличная.
14. Indgo 327 01.02.23 09:38 Сейчас в теме
(13) @Post - это так олдскульно %-)
16. ltfriend 919 01.02.23 19:19 Сейчас в теме
(14) а передавать данные изображения в URL GET-запросом это "стильно, модно, молодёжно"?
Взято с developer.mozilla.org
Метод GET запрашивает представление ресурса. Запросы с использованием этого метода могут только извлекать данные.
POST используется для отправки сущностей к определённому ресурсу.
dsdred; Indgo; +2 Ответить
17. dsdred 2808 03.02.23 00:27 Сейчас в теме
(14)так то на минуточку... Вы паспортные данные гоняете.
утюгчеловек; y22-k; +2 Ответить
23. Indgo 327 08.02.23 21:08 Сейчас в теме
(17) Куда гоняю?
24. dsdred 2808 08.02.23 21:18 Сейчас в теме
(23) В URL
http://localhost:4567/{jpeg картинка в формате dbase64} - она же паспортные данные

-> MITM-атака (Man in the middle – атака человека посередине)
Прикрепленные файлы:
26. Indgo 327 09.02.23 23:27 Сейчас в теме
(24) Ну да. Что сказать.
Тут уж какая разница пост или гет. Либо есть шифрация SSl либо нет. Если поднимать свой сервис на локалхост, то сами понимаете - некуда ваши запросы за пределы сервера не уйдут.
Поэтому и выкладываю тут коды, чтобы сами могли сделать свой "личный" сервис
Трактор; +1 Ответить
28. Трактор 1246 22.02.23 10:07 Сейчас в теме
(24) убиться веником!
В чём принципиальна разница между get и post? Только в буквах, что написаны в заголовке запроса. Больше ни в чём. Технически это один и тот же хттп запрос.
Одни языки позволяют отправлять тело запроса в get, например, питон, 1С. Другие принципиально требуют отправить тело запроса только методом post, например php.

На мой взгляд,это ограничение искусственное. Я делал веб сервис, принимающий отбор в виде json. Я не знаю какого размера будет этот json, поэтому жду его в теле запроса. Программисты php понимают почему так сделано, но могут пользовать только post.

Вот така беда, малята.
29. dsdred 2808 22.02.23 10:32 Сейчас в теме
(28)с кем то можно договорится и придерживаться договорённостей, а кто-то плювал на все и делает как хочется.

Но я лучше съем то что сделано по ГОСТ чем по ТУ.
35. uno-c 225 17.10.23 11:12 Сейчас в теме
(24) В случае успешной MITM атаки будут расшифрованы и URL в GET-запросе и тело в POST-запросе. Если атака неуспешна, расшифровка не получится, и скрытыми останутся и GET-URL и POST-тело - и то и другое шифруется в HTTPS
31. buganov 196 03.03.23 05:14 Сейчас в теме
(17)в границах одной машины же, на которой этот паспорт уже лежит
15. Indgo 327 01.02.23 09:43 Сейчас в теме
(13) Недавно смотрел коды яндекса. Там тоже есть программисты , которые постятся. Потом на сайте жмешь назад, а он такой - "Вы подтвержадаете повторую отправку формы"? итп
2. JIEX@ 93 30.01.23 11:43 Сейчас в теме
Одобряю
E_Zaytsev; Indgo; +2 Ответить
4. Sedaiko 459 30.01.23 14:01 Сейчас в теме
Лучше python-функции обернуть в FastAPI или даже в Bottle и обращаться через HTTPСоединение.
anvolkov1cbit; Indgo; +2 Ответить
5. Indgo 327 30.01.23 14:21 Сейчас в теме
(4)
е python-функции обернуть в FastAPI или даже в Bottle и обращаться через HTTPС

Да согласен. Так даже лучше.
6. VKuser924421 30.01.23 15:17 Сейчас в теме
Можно проще. Посмотрите в типовой УТ кусок кода для запуска внешней программы. Там она будет ждать возврата из программы например имени файла.


ФайловаяСистемаКлиент.ЗапуститьПрограмму(
КомандаЗапуска,
ПараметрыЗапускаПрограммы);
NiGMa; Indgo; +2 Ответить
7. Indgo 327 30.01.23 16:30 Сейчас в теме
(6)
ФайловаяСистемаКлиент.ЗапуститьПрограмму(
КомандаЗапуска,
ПараметрыЗапускаПрограммы);

Да спасибо. Посмотрю
8. tindir 31.01.23 04:27 Сейчас в теме
Читал про тессеракт и опенЦВ. Впечатлен был по самое небалуй. Но споткнулся на реализации. Была идея распознавать внутренние "товарки" и кусочек входящей упд. Так и не сообразил как надрессировать опенцв на поиск нужной области.
20. Indgo 327 06.02.23 11:37 Сейчас в теме
(8) позже выложу распознавание счф, торг12, упд итп. Там конечно сложнее чем паспорт, но библиотека CV2 решает большинство проблем.
9. AntonProgma 43 31.01.23 10:40 Сейчас в теме
1С:Гадюка. Если питон и 1с скрестить.
GinGitsune; VasilyErmak; spectre1978; Indgo; +4 Ответить
12. Indgo 327 31.01.23 12:13 Сейчас в теме
(9)
1С:Гадюка

Точно гадюка.
10. VSvintsov1 31.01.23 11:33 Сейчас в теме
скачиваем ... заимствуем ... воспользуемся сборкой для win64 от немецких коллег ...
откуда такая безграничная уверенность в безопасности открытого ПО в целом, и в частности того что в статье указано?
действительно специалист службы безопасности разрешил все это использовать с конфиденциальными данными?
11. Indgo 327 31.01.23 12:12 Сейчас в теме
(10)
качиваем ... заимствуем ... воспользуемся сборкой для win64 от немецких коллег ...
откуда такая безграничная уверенность в безопасности открытого ПО в целом, и в частности того что в статье указано?
действительно специалист службы безопасности разрешил все это использовать с конфиденциальными данными?

Порядочные джентльмены доверяют друг другу.
Если доверие нарушено - то он лишается такого статуса. Лично я доверительно отношусь к компании HP и к Мангеймскому университету.
Tesseract - есть совместный продукт компании HP и Google.
Если вы не доверяете им либо считаете что вы умнее специалистов HP и Google - то не качайте и напишите свой распознаватель текста.
Если вы не доверяете библиотекам типа Dlib, cv2- то это вопрос не ко мне. Хотя может вы и правы, может все зависит от степени паранои ).

Ну к примеру профессор Рудольф и доктор Ганс после лекций Мангеймского университета тайно собираются с разрабами Google итп... в темных подвалах, одевают одежду темную одежду с темными капишонами и пишут под диктовку илона Маска зловредный код.... Страшно??? .. бугагага.
А еще бывают случаи когда Илон Маск считывает ваши кредитные карты(Картридер встроен в корытце Tesla Model Y вместе с безпроводной зарядкой) а потом после работы заказывает через Сбербанк онлайн пиццу на ваши кровные деньги. Поэтому покупайте Жигули семерку. И телефон только Аналоговый и говорите шифрованными словами чтобы Марюся(Унмная Колонка) соседки вас не подслушивала.
e-its; Garik-1980; vita55555; comptr; Progerok; narayanan; +6 Ответить
27. izidakg 170 10.02.23 08:52 Сейчас в теме
(10) странное замечание для своего сервиса.
безопасникам лучше канал на внешний сервис проверить и сотрудников сервиса, код сервиса?
если параноить так, стоит самому сборку с исходников собрать. и так иногда делают. хотя и тут возникает вопрос - а сотруднику что сборку компилировал вы доверяете?
18. cdb 26 04.02.23 12:43 Сейчас в теме
Раздел "Далее устанавливаем библиотеки" .
7. устанавливаем DLIB
python -m pip install -U dlib==19.22.1
8. устанавливаем tesseract-ocr.
python -m pip install -U dlib==19.22.1

Т.е. одна команда для установки разных библиотек. Так?
22. Indgo 327 06.02.23 11:41 Сейчас в теме
(18) Спасибо. Была опечатка. Исправил на "pip install pytesseract"
19. MarryJane 31 05.02.23 16:50 Сейчас в теме
Если кому интересно для ИИС web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="D:\Programs\Python\Python37\python.exe|C:\inetpub\wwwroot\getpolyline\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
</handlers>

</system.webServer>
<appSettings>
<add key="WSGI_HANDLER" value="main.wsgi_app"/>
<add key="PYTHONPATH" value="C:\inetpub\wwwroot\getpolyline\" />
<add key="WSGI_LOG" value="C:\inetpub\wwwroot\getpolyline\wfastcgi.log" />
</appSettings>
</configuration>

* - D:\Programs\Python\Python37\python.exe - адрес питона
* - C:\inetpub\wwwroot\getpolyline\wfastcgi.py - адрес вебсервиса

Пример main.py

from fastapi import FastAPI, Header, Body
from a2wsgi import ASGIMiddleware

tags_metadata = [
{
'name' : 'items',
'description': 'items',
}
]

app = FastAPI(
title = 'Polyline API')

--- описание методов get post (метод post в IE не срабатывает так что не воспринимайте как ошибку)

wsgi_app = ASGIMiddleware(app) // главная обертка

У меня вебсервис рассчитывает расстояния между точками, которое получается от гугла.
_Ramzes; dsdred; Indgo; AleksandrFil; +4 Ответить
21. Indgo 327 06.02.23 11:39 Сейчас в теме
(19)
Если кому интересно для ИИС web.config

Для apache лучше скинь ;-)
Трактор; +1 Ответить
25. vlaskin 82 09.02.23 18:10 Сейчас в теме
А можно использовать другой вариант https://infostart.ru/public/1557184/, локальная установка (правда exe), также на выходе получается текстовый файл, из которого уже можно вытащить нужную информацию. Я так сделал загрузку разовых начислений в ЗУП 3.1 по скану наряда, утвержденного в организации (все данные в скане пропечатаны, от руки только подписи ответственных).
30. evgen 26.02.23 13:55 Сейчас в теме
Т.к. стартманей нет, хотел повторить за автором, но... В показаном passport.py ошибка: у первого аргумента не закрыт description. И видимо в "list_abs_path_folder = ReturnAbsPathPict().main(abs_path_folder)" что то не так. Потому как питон ругается, что "TypeError: main() takes 1 positional argument but 2 were given".
32. websamson 306 03.03.23 08:54 Сейчас в теме
Ошибка:

Traceback (most recent call last):
  File "D:\Python310\paasport\passport.py", line 100, in <module>
    main()
  File "D:\Python310\paasport\passport.py", line 80, in main
    dict_image_no_face_and_cropped_face = FaceWork(path_pict_no_bg, abs_path_folder, visualization=False).main()
  File "D:\Python310\paasport\lib\face_work.py", line 163, in main
    abs_path_resize_pict, list_face_descriptor = self.find_face_and_resize_pict(path_pict_no_bg, sp, facerec)
  File "D:\Python310\paasport\lib\face_work.py", line 92, in find_face_and_resize_pict
    img = dlib.load_rgb_image(path_pict_no_bg)
RuntimeError: Unable to open file: C:\Users\cache\picts/паспорт.png
Показать
33. Indgo 327 11.04.23 17:21 Сейчас в теме
(32)
C:\Users\cache\picts/паспорт.png

Ошибка говорит о том что не может найти файл "C:\Users\cache\picts/паспорт.png" Поменяй ссылку на паспорт
34. MarryJane 31 03.05.23 21:41 Сейчас в теме
Оставьте свое сообщение