Почему извлечение PDF текста зависает для одного PDF, но работает через RDP - PullRequest
0 голосов
/ 28 июня 2018

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

Библиотека, которую я использую - это SDK ByteScout PDF Extractor, основанный на Tesseract под обложками.

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

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

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

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

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

Он работает на Server 2008, если у меня RDPed, но не как запланированная задача.

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

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

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

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

1 Ответ

0 голосов
/ 03 июля 2018

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...