|
Ошибка при работе с типами COMОбъекта | ☑ | ||
---|---|---|---|---|
0
Crashxxx
11.12.14
✎
16:42
|
Всем привет. Платформа 8.3.5.1119, при работе с ABBYY FlexiCaptureEngine через COMОбъект возникает ошибка "Типы не совпадают (0)".
API FlexiCaptureEngine предоставляет интерфейс для распознавания текста изображений и экспорта этих данных в нужном формате. engineLoader = Новый COMОбъект("FCEngine.InprocLoader"); Engine = engineLoader.Load(СерийныйНомер, ); processor = Engine.CreateFlexiCaptureProcessor(); processor.AddDocumentDefinitionFile("C:\ТоварнаяНакладная.fcdot"); processor.AddImageFile("C:\накладная 1.pdf"); document = processor.RecognizeNextDocument(); processor.ExportDocumentEx(document, "C:\ТовНаклПроектФлКапч", "exportFileName", 0); В строке document = processor.RecognizeNextDocument(); получаем объект типа Document (объект со свойствами и методами распознанного документа). В 1С он преобразуется в COMОбъект, далее этот документ необходимо передать в метод ExportDocumentEx для экспорта. Первый параметр этого метода так же ожидает объект типа Document. Но при вызове метода как указано в примере выше возникает ошибка "Типы не совпадают (0)". Какие могут быть варианты решения? |
|||
1
Господин ПЖ
11.12.14
✎
16:44
|
processor.ExportDocumentEx(processor.RecognizeNextDocument(), "C:\ТовНаклПроектФлКапч", "exportFileName", 0);
? |
|||
2
Garykom
гуру
11.12.14
✎
16:45
|
(0) мдааа слов нету
прям из анегдота когда один программер печатает 2 камаза бумаги, а другой их распознает |
|||
3
Garykom
гуру
11.12.14
✎
16:46
|
(0) Нельзя позвонить поставщику и попросить прислать тоже самое но в Excel? Ну или в PDF но которая из текста а не картинкой?
|
|||
4
Serginio1
11.12.14
✎
16:47
|
Может
processor.ExportDocumentEx(document, "C:\ТовНаклПроектФлКапч", "exportFileName", неопределено); |
|||
5
Smallrat
11.12.14
✎
16:55
|
(3) мы как-то попросили, нам отказали. один фиг в pdf таблицы нарисованы поверх текста.
|
|||
6
Smallrat
11.12.14
✎
16:55
|
пришлось мутить конвертацию pdf
|
|||
7
Лефмихалыч
11.12.14
✎
16:58
|
(3) позвонить и попросить можно, чо ж нельзя-то?.. Правда получить положительный ответ на просьбу вряд ли получится. Такова вот селяви
|
|||
8
Garykom
гуру
11.12.14
✎
17:03
|
а может тогда поискать http://forum.ocrsdk.com/questions/1016/how-to-match-diferent-images-to-different-templates
типа забыли // load all to memory processor.PrepareProcessing(); после выбора образа и перед распознанием? |
|||
9
Garykom
гуру
11.12.14
✎
17:05
|
(8) или вообще лучше через создание пакета(batch) пойти http://club.directum.ru/post/Abbyy-FlexiCapture-Engine--IS-Builder--Avtomatizacija-vvoda-i-obrabotki-dokumentov.aspx
|
|||
10
Serginio1
11.12.14
✎
18:24
|
||||
11
Garykom
гуру
11.12.14
✎
18:38
|
(10) 2012 год, какая там версия?
|
|||
12
Serginio1
11.12.14
✎
18:55
|
||||
13
Garykom
гуру
11.12.14
✎
18:57
|
(12) это к чему?
|
|||
14
Serginio1
11.12.14
✎
19:10
|
(13) в 11 просто примеры. там в 4 параметре стоит неопределено (null)
Скачивай последний SDK который будет поддерживать последние версии |
|||
15
Crashxxx
12.12.14
✎
10:34
|
(1) Пробовал, не помогло, еще пробовал создавать пустой документ
processor.ExportDocumentEx(processor.CreateDocument(), "C:\ТовНаклПроектФлКапч", "exportFileName", 0); Тоже не помогло (4)Пробовал Непределно, 0, пустые строки, нули, просто ничего не передавал processor.ExportDocumentEx(document, "C:\ТовНаклПроектФлКапч", "exportFileName", ); все глухо, ну и судя по всему ошибка в первом параметре (8)Не то, этот метод загружает определения документа в память и делает настройки конфигурации, для серверных решений. (9)Пробовал, есть разница между работой через батчи и с использованием процессора. Везде свои "+" и "-", мне нужен именно вариант процессора. Батч тоже пробовал, там возникает ошибка при заполнении экспортных параметров в файл, могу описать её, но это трата времени. И вообще во многих местах, где необходимо передать параметры (в методы ком объекта) и, судя по документации, можно передать значение "0" для использования параметров по умолчанию, возникают ошибки и приходится создавать пустые объекты, и их передавать в виде параметров. (10)Именно это я и хочу реализовать. В примере кода инициализация engine на с++ происходит вызовом InitializeEngine, этот как я понимаю процедура из предварительно загруженной FCEngine.dll (могу ошибаться.) Вообще вот этот кусок мне на 100% не ясен [DllImport("FCEngine.dll", CharSet = CharSet.Unicode), PreserveSig] private static extern int InitializeEngine(string devSN, string reserved1, string reserved2, out IEngine engine); [DllImport("FCEngine.dll", CharSet = CharSet.Unicode), PreserveSig] но в 1с я все равно могу только реализовать все это через COMОбъект, как указано в (0). (11), (14)Версия 10. SDK последняя. Неопределено пробовал, и много чего еще, как и писал выше. |
|||
16
Crashxxx
12.12.14
✎
10:42
|
Мой вариант такой что 1С конвертирует тип значения document при его получении document = processor.RecognizeNextDocument(); в COMОбъект, а далее при передаче в processor.ExportDocumentEx(document, "C:\ТовНаклПроектФлКапч", "exportFileName", 0); переменная document не конвертируется в ожидаемый методом тип FCEngine.IDocument.
вот пример из VB Public Engine As FCEngine.IEngine Dim processor As FCEngine.IFlexiCaptureProcessor Dim document As FCEngine.IDocument ... ' Export results processor.ExportDocument document, "D:\ExportResults" По хорошему 1С здесь надо бы уметь сделать что-то типа document = Новый FCEngine.IDocument; Поэтому мой вариант это писать внешнюю комноненту на том же c++, VB, Delphi... на всем что нормально отработает вызовы методов и передачу параметров. А дальше уже используя ВК делать то что необходимо. Но писать эту ВК не хочется. Может есть какой вариант заставить все это цивилизованно работать и без ВК. |
|||
17
Serginio1
12.12.14
✎
14:33
|
(16) Можешь использовать сборки Net v8: v8: Использование сборок .NET в 1С 7.x и 8.x
|
|||
18
Garykom
гуру
12.12.14
✎
22:59
|
(16) зачем писать ВК когда можно быстро использовать vbs?
|
|||
19
Crashxxx
15.12.14
✎
09:10
|
(18)Да, тоже этот вариант решил сначала проверить и выяснилось в итоге что проблема была в некорректно написанном определении документа "C:\ТоварнаяНакладная.fcdot". Хотя оно отлично отрабатывало в FlexiCapture 10, при использовании в коде тоже не выдавало явных ошибок, указывающих на его проблемы. Но при тестировании данного кода на тестовых данных из поставки sdk все отлично отрабатывает. Тема закрыта.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |