Сообщество

Помогите выгрузить с сервера RecognizedWords - XML-документ, скиньте пожалуйста пример? С ответом

Помогите выгрузить с сервера RecognizedWords - XML-документ по документу, скиньте пожалуйста пример?

Была ли эта статья полезной?

Пользователи, считающие этот материал полезным: 0 из 0

Комментарии

Комментариев: 18

  • Avatar
    Alexey Efremov

    Здравствуйте Алексей,

    В справке есть  статья "Application programming interface (API) > References > Working with files".

    Хотелось бы узнать, какой метод подключения вы используете.

    Какие сообщения об ошибках получаете?

    Если есть проект, можете нам его выслать?

    Вот в этой теме рассматривается похожий запрос:

    http://www.capturedocs.com/thread/2759-abbyy-fc11-get-xml-with-coordinates/

    Проверьте так же что пакет не был создан на станции настпройки проекта, а прошел стадию распознавания через workflow.

    Можно проверить наличие этого файла на сервере (если у вас подключено файловое хранилище).

    В файловом хранилище зайдите в папку с guid базы, затем выберите проект по номеру на сервере, зайдите в папку "0000-0999" - там лежат данные пакетов и по номеру пакета зайдите в его папку. Там можно проверить наличие файлов с именем "RecognizedWords". Если их нет - отправьте пакет на распознавание еще раз. 

     

    0
  • Avatar
    Alexey Efremov

    Пример кода на С#:

    //убедитесь что вы предварительно открыли через API сессию, проект и пакет

     

    List<byte> xmlFileBytes2 = POSTLoadFile( "http://localhost", FCServHandler.sessionID, FCServHandler.projectId, FCServHandler.batchId, 0, docToOpenId, 0, "RecognizedWords" );

    ByteListToFile( "С:\\Temp\\RecognizedWords.xml", xmlFileBytes2 );

     

    public static List<byte> POSTLoadFile( string AppServerURL, int session, int projectId, int batchId, int objectType, int objectId, int version, string streamName )

    {

    List<byte> result = new List<byte>();

    HttpWebResponse response = null;

    Stream responseStream = null;

    BinaryReader reader = null;

    try {

    // form the request

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create( AppServerURL + "/FlexiCapture11/Server/WebServices.dll?Handler=FileService" );

    request.Method = "POST";

    // working with authentication, specified when connecting to the web-service

    if (basicAuthenticationCredentialCache != null) {

    request.Credentials = basicAuthenticationCredentialCache;

    } else {

    request.UseDefaultCredentials = true;

    }

    request.ContentType = "application/x-www-form-urlencoded";

    string postData = "Action=Load" +

    "&sessionId=" + session +

    "&objectType=" + objectType +

    "&projectId=" + projectId +

    "&batchId=" + batchId +

    "&objectId=" + objectId +

    "&version=" + version +

    "&streamName=" + streamName;

    StreamWriter writer = new StreamWriter( request.GetRequestStream() );

    writer.Write( postData );

    writer.Close();

     

    // get the response and analyse it

    response = (HttpWebResponse)request.GetResponse();

    responseStream = response.GetResponseStream();

    reader = new BinaryReader( responseStream );

    int responseStreamLength = 0;

    while (true) {

    try {

    result.Add( reader.ReadByte() );

    responseStreamLength++;

    }

    catch (EndOfStreamException) {

    break;

    }

    }

    reader.Close();

    responseStream.Close();

    response.Close();

    }

    catch (Exception ex) {

    MessageBox.Show( ex.ToString() );

    }

    if (response != null) response.Close();

    if (responseStream != null) responseStream.Close();

    if (reader != null) reader.Close();

    return result;

    }

     

     

    public bool ByteListToFile( string fileName, List<byte> byteList )

    {

    try {

    using (var fs = new FileStream( fileName, FileMode.Create, FileAccess.Write )) {

    foreach (byte b in byteList) {

    fs.WriteByte( b );

    }

    return true;

    }

    }

    catch (Exception ex) {

    MessageBox.Show( ex.ToString() );

    return false;

    }

    }

    0
  • Avatar
    Aleksey

    Пробовал выгружать используя RestSharp и картинки документов выгружаются отлично, но вот  RecognizedWords не получается выгрузить хотя на Станции Верификации все распознавалось. 

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

    Подскажите как кодом отправить документ на стадию распознавания workflow?

    Может ли на сервере вообще не создаваться документ RecognizedWords?

    Заранее спасибо за помощь!

    0
  • Avatar
    Alexey Efremov

    Подскажите как кодом отправить документ на стадию распознавания workflow?

    Batch.ProcessBatch(int sessionId, int batchId )

    Но проще все таки через станцию сканирования, например, отправить.

    Может ли на сервере вообще не создаваться документ RecognizedWords?

    Попробуйте включить галочку "разрешить веб-станции" для стадии верификации, есть подозрение, что этот документ генерируется только для веб-станций. После включения нужно послать пакет на верификацию заново. 

    Проверьте есть ли файл в файловом хранилище, как я описывал выше. 

     

    0
  • Avatar
    Aleksey

    Алексей, а если все работает через SQL сервер и "использование файлового хранилища" отметка отсутствует. Можно как то данные из полей достать которые на верификацию попадают ? DocumentBody тоже отсутствует.  Сессию подключаю  Старший верификатор, Станция верификации service.openSession(6, 3); 

    0
  • Avatar
    Aleksey

    Все получилось после включения галочки "разрешить веб-станции" , но в этот раз  файл RecognizedWords < выгрузился   вот с таким текстом <PageText xmlns="urn:pageText" PageId="34870"/> вопрос как передать в  RecognizedWords распознанные поля в документе ?

     

    0
  • Avatar
    Aleksey

    А можно каким то образом после этапа Распознавания узнать какие поля в документе распознавались ? Они же в принципе есть, информация же передается как то на верификацию?

    0
  • Avatar
    Alexey Efremov

    Добрый день.

    Прошу прощения за задержки с ответом.

    Попробуйте в настроках выставить галочку:

     К сожалению в справке это не описано, но можно также попробовать включить стадию Data Verification и разрешить для нее веб станции - возможно что RecognizedWords генерится как раз только для этой стадии.

    Попробуйте эти 2 варианта. Если не поможет - будем обращаться к разработчикам. 

    А чтобы достать список полей нужно получить файлы Verification и VerificationRequest вместо recognizedWords.

     

     

     

     

     

    0
  • Avatar
    Alexey Efremov

    Можно также попробовать действовать в точности как в справке - создать стадию типа "User type" и получать задачу с нее.

    Попробуйте создавать сессию с правами External user + external station: OpenSession( 10, 12 )

    К сожалению без кода и  проекта мне очень сложно вам помочь.

     

    0
  • Avatar
    Aleksey

    Попробовал Включить стадию Data Verification и проставить отметку "хранить полный текст документа" также  RecognizedWords  выгружается с текстом <PageText xmlns="urn:pageText" PageId="34870"/> , пробовал на множестве документов и определений ситуация такая же. Если взять задание на верификации символы распознаны... Создавал новый проект и подгружал только одно определение такая же ситуация. Сессию и стадию другую тоже пробовал.

    Можете показать пример как достаются документы  Verification и VerificationRequest и на какой стадии они формируются.

    List<byte> xmlFileBytes2 = POSTLoadFile( "http://localhost", FCServHandler.sessionID, FCServHandler.projectId, FCServHandler.batchId, 0, docToOpenId, 0, "Verification" );

    Пробовал так достать безуспешно. Пробовал менять objectType на 0,1,8  и версии документа ничего не выходит.

    Возможно я не правильно указываю docToOpenId , можно какой нибудь пример как найти задачу для  Verification и VerificationRequest  и правильно отправить POST-запрос?

    0
  • Avatar
    Alexey Efremov

    Нашел у коллег VS 2010 проект для FC11.

    https://share.abbyy.com/index.php/s/AC0zs8pGFdqQDt8

    Попробуйте, пожалуйста

    0
  • Avatar
    Aleksey

    Попробовал этот проект такая же ситуация DocumentBody выгружается только на верификации. Остальные документы отсутствуют Verification и VerificationRequest и recognizedWords(без распознанного текста) . Если ли иные способы получить информацию о распознанных данных до верификации или на верификации в крайнем случае(но форма с распознанными данными скрыта так как сравнение идет с веденными вручную и распознанными). Заметил одну особенность если пройти все этапы и в экспорте настроить выгрузку все поля отлично туда 

    Идея заключается в том чтобы отправить в web-service документ, а сервис вернул только распознанные данные из гибкого описания.  

    0
  • Avatar
    Aleksey

    Добрый день! Можете подсказать можно ли реализовать то, что я описал в посте выше?

    0
  • Avatar
    Alexey Efremov

    Здравствуйте, Алексей.

    Простите за молчание, я запросил консультацию со специалистами в Москве, сейчас жду ответа. Как только что-то узнаю - сразу же отпишусь.

    Спасибо за терпение.

     

     

     

     

    0
  • Avatar
    Alexey Efremov

    Если ничего верифицировать не предполагается- можно попробовать отключить стадию верификации. Пусть проекты проходят сразу в Обработанные и вы сможете оттуда извлечь данные

    (можно например так как описано в статье Application Programming Interface (API) > Using the Web Services API of the ABBYY FlexiCapture Application Server > Getting the processing results)

    Если не помогает, вышлите ваш проект FC (Project Setup Station > Project > Export Prоject) и VisualStudio. Попробую разобраться. Если сам не смогу - сразу в Москву отправлю.

    Алексей

     

     

     

    0
  • Avatar
    Aleksey

    Без этапа Верификации все получается, но он нужен . Мне нужно получить данные после этапа Распознавание, чтобы проанализировать результат и уже после этого направить на верификацию. Вопрос в том как получить данные которые придут на Верификацию заранее? Так как промежуточных этапов между Распознаванием и Верификацией нет. Пробовал создать новый проект с одним определением проблема аналогичная. 

    0
  • Avatar
    Alexey Efremov

    Алексей,

    вот ссылка для загрузки проекта:

    https://share.abbyy.com/index.php/s/3IsQPlctGqrOmvd

     

     

    0
  • Avatar
    Aleksey

    Решение по данному вопросу видимо только одно, после распознавания экспортировать документ, а уже после этого направлять на верификацию. Либо скриптовым этапом все распознанные поля помещать в рег.параметры пакета у же после это вытаскивать из через webservice

    0

Войдите в службу, чтобы оставить комментарий.