Почему извлечение текста из PDF-файла зависает для одного PDF-файла, но работает через RDP

У меня есть программа, которая извлекает текст из PDF-файлов. Он выполняется как запланированная задача в Windows Server 2008.

Я использую библиотеку ByteScout PDF Extractor SDK, основанную на Tesseract.

С момента запуска в ноябре прошлого года программа успешно извлекла текст из более чем 50 000 PDF-файлов из разных источников.

Недавно он завис на одном PDF-файле, а затем и на втором, из того же источника в том же визуальном формате.

Я могу воссоздать проблему, используя тривиальную 12-строчную программу. Я отправил эту программу поставщику, но запуск этой программы в их среде работает (не зависает).

Итак, я провел несколько экспериментов, и вот тут-то и возникает странность.

Программа работает на моем ПК (Windows 7), если я подключаюсь к ней по протоколу RDP, но не при входе в систему напрямую. Это поведение повторяется на других ПК с Windows 7 в нашей среде.

Он работает на сервере 2008, если я использую RDP, но не как запланированное задание.

Он работает в Windows 10, независимо от того, подключен ли я к удаленному рабочему столу или вошел в систему напрямую.

Если я смотрю программу в Process Monitor, когда она зависает, я вижу, что она снова и снова открывает и читает C:\Windows\Fonts\times.ttf.

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

У кого-нибудь есть предложения, куда смотреть дальше?


person Glen    schedule 28.06.2018    source источник


Ответы (1)


Итак, ByteScout устранил проблему. Цитировать Евгения по делу...

Проблема в System.Drawing и GDI+. Иногда происходит сбой при операциях рисования текста, которые являются нормальными в PDF, но вызывают некоторые внутренние исключения в System.Drawing. Более того, его поведение зависит от возможностей устройства отображения. Вот почему он работает в сеансе RDP и вылетает на рабочем столе. Мы пробуем различные обходные пути для этих сбоев, пытаясь вернуться к альтернативным способам рисования текста. Зависание связано с этими запасными вариантами.

person Glen    schedule 02.07.2018