{ "code": "receipt.not.found", "message": "Чек не найден", "additionalInfo": { } }
Функция РаспознатьOCRSpace(СсылкаНаЧек) // подготовим файл с данными для отправки строкаBase64=Base64Строка(ПолучитьДвоичныеДанныеФайлаПоСсылке(СсылкаНаЧек)); строкаBase64=СтрЗаменить(строкаBase64,Символы.ВК,""); строкаBase64=СтрЗаменить(строкаBase64,Символы.ПС,""); имяФайлаОтправки = ПолучитьимяВременногоФайла("txt"); Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", ""); ЗаписьТекста = Новый ТекстовыйДокумент; ЗаписьТекста.РазделительСтрок=Символы.CR+Символы.LF; // параметр "language" ЗаписьТекста.ДобавитьСтроку("Content-Disposition: form-data; name=""language"""); ЗаписьТекста.ДобавитьСтроку(""); ЗаписьТекста.ДобавитьСтроку("rus"); ЗаписьТекста.ДобавитьСтроку("--"+boundary); // параметр "filetype" ЗаписьТекста.ДобавитьСтроку("Content-Disposition: form-data; name=""filetype"""); ЗаписьТекста.ДобавитьСтроку(""); ЗаписьТекста.ДобавитьСтроку("png"); ЗаписьТекста.ДобавитьСтроку("--"+boundary); // параметр "OCREngine" ЗаписьТекста.ДобавитьСтроку("Content-Disposition: form-data; name=""OCREngine"""); ЗаписьТекста.ДобавитьСтроку(""); ЗаписьТекста.ДобавитьСтроку("2"); ЗаписьТекста.ДобавитьСтроку("--"+boundary); // параметр "isOverlayRequired" ЗаписьТекста.ДобавитьСтроку("Content-Disposition: form-data; name=""isOverlayRequired"""); ЗаписьТекста.ДобавитьСтроку(""); ЗаписьТекста.ДобавитьСтроку("false"); ЗаписьТекста.ДобавитьСтроку("--"+boundary); // параметр "isTable" ЗаписьТекста.ДобавитьСтроку("Content-Disposition: form-data; name=""isTable"""); ЗаписьТекста.ДобавитьСтроку(""); ЗаписьТекста.ДобавитьСтроку("true"); ЗаписьТекста.ДобавитьСтроку("--"+boundary); // параметр "scale" ЗаписьТекста.ДобавитьСтроку("Content-Disposition: form-data; name=""scale"""); ЗаписьТекста.ДобавитьСтроку(""); ЗаписьТекста.ДобавитьСтроку("true"); ЗаписьТекста.ДобавитьСтроку("--"+boundary); // параметр "base64Image" //ЗаписьТекста.ДобавитьСтроку("--"+boundary); //ЗаписьТекста.ДобавитьСтроку("Content-Disposition: form-data; name=""file""; filename=""check.png"""); //ЗаписьТекста.ДобавитьСтроку("Content-Type: image/png"); ЗаписьТекста.ДобавитьСтроку("Content-Disposition: form-data; name=""base64Image"""); ЗаписьТекста.ДобавитьСтроку(""); ЗаписьТекста.ДобавитьСтроку("data:image/png;base64,"+строкаBase64); ЗаписьТекста.ДобавитьСтроку(""); ЗаписьТекста.ДобавитьСтроку("--"+boundary+"--"); // передадим данные на сервер Заголовки = Новый Соответствие(); Заголовки.Вставить("Content-Type", "multipart/form-data; boundary="+boundary); //Заголовки.Вставить("Content-Lenght", РазмерФайлаОтправки); Заголовки.Вставить("apikey", "ххххххххх"); //API ключ - можно получить на сервере ИнетЗапрос = Новый HTTPЗапрос("Parse/Image",Заголовки); ИнетЗапрос.УстановитьТелоИзСтроки(ЗаписьТекста.ПолучитьТекст()); ssl = Новый ЗащищенноеСоединениеOpenSSL; Соединение = новый HTTPСоединение("api.ocr.space",,,,,,ssl); Ответ=Соединение.ОтправитьДляОбработки(ИнетЗапрос); ОтветСтрока=Ответ.ПолучитьТелоКакСтроку(); Если НЕ Ответ.КодСостояния=200 Тогда Сообщить("Ошибка! "+СокрЛП(ОтветСтрока)); Возврат ""; КОнецЕсли; ЧтениеОтвета = Новый ЧтениеJSON; ЧтениеОтвета.УстановитьСтроку(ОтветСтрока); структураОтвета=ПрочитатьJSON(ЧтениеОтвета); СтрокаТекстов=""; стр2=""; счч=0; Если структураОтвета.Свойство("ParsedResults") Тогда Если СтруктураОтвета.ParsedResults.Количество()>0 Тогда СТрокаТекстов=структураОтвета.ParsedResults[0].ParsedText; КонецЕсли; КонецЕсли; мВыход=Новый Массив; мвыход=СтрРазделить(СтрокаТекстов,Символы.ПС); Возврат строкаТекстов; КонецФункции // РаспознатьOCRSpace() Функция ПолучитьДвоичныеДанныеФайлаПоСсылке(СсылкаНаЧек) Каталог = КаталогВременныхФайлов(); Если Прав(Каталог, 1) = "\" Тогда СтрДлина = СтрДлина(Каталог); Каталог = Лев(Каталог, СтрДлина - 1); КонецЕсли; ИмяФайлаЗначение = _ЗагрузитьКартинкуЧекаИзФНС(СсылкаНаЧек,Каталог); Если ИмяФайлаЗначение="" Тогда ВОзврат неопределено; КонецЕсли; ДанныеФайла = новый ДвоичныеДанные(ИмяФайлаЗначение); Возврат ДанныеФайла; КонецФункции // ПолучитьДвоичныеДанныеФайлаПоСсылке() Функция _ЗагрузитьКартинкуЧекаИзФНС(СсылкаНаЧек,КаталогЧеков) //Загрузить картинку чека из ФНС. // пар1 - ссылка на чек // пар2 - каталог, в который картинка в виде файла помещается //Возврат - имя файла (полный путь) //---Разберем ссылку массивСсылки=СтрРазделить(СсылкаНаЧек,"/"); Если массивСсылки.Количество()<6 Тогда Возврат ""; КонецЕсли; ИмяСервера=массивСсылки[1]; НомерЧека=массивСсылки[6]; ИмяЧека = КаталогЧеков + "\"+НомерЧека+".png"; HTTPЗапрос=СтрЗаменить(СсылкаНаЧек,"https://"+ИмяСервера,""); //--- Соединение = Новый HTTPСоединение(ИмяСервера,443,,,,,Новый ЗащищенноеСоединениеOpenSSL()); Попытка Ответ=Соединение.Получить(HTTPЗапрос, ИмяЧека); Если Ответ.КодСостояния=200 Тогда Возврат ИмяЧека; Иначе Возврат ""; КонецЕсли; Исключение Возврат ""; КонецПопытки; КонецФункции // ЗагрузитьКартинкуЧекаИзФНС()