Когда у Вас есть многопоточное приложение, различные потоки иногда совместно используют общий ресурс, такой как переменное или подобное. К этому общему источнику часто нельзя получать доступ одновременно, таким образом, конструкция необходима, чтобы гарантировать, что только один поток использует тот ресурс за один раз.
понятие называют "взаимным исключением" (короткое Взаимное исключение) и является способом гарантировать, что только один поток позволяется в той области, с помощью того ресурса и т.д.
, Как использовать их, конкретный язык, но часто (если не всегда) на основе взаимного исключения операционной системы.
Некоторым языкам не нужна эта конструкция, из-за парадигмы, например, функциональное программирование (Haskell, ML хорошие примеры).
Теперь, пойдите, спрашивает Google, как использовать их!:)
С помощью этих модулей вы можете получить извлечение текста из pdf
From CPAN
my $pdf = CAM::PDF->new($filename);
my $pageone_tree = $pdf->getPageContentTree(1);
print CAM::PDF::PageText->render($pageone_tree);
Этот модуль пытается извлечь последовательный текст со страницы PDF. Это не надежный процесс, так как текст PDF графически размещен в произвольном порядке. Этот модуль использует несколько эвристик, чтобы попытаться угадать, какой текст идет рядом с другим текстом, но его легко обмануть, скажем, с помощью нижних индексов, негоризонтального текста, изменений шрифта, полей формы и т. Д.
Все эти заявления об отказе от ответственности в стороне , это полезно для быстрого создания дампа текста из простого файла PDF.
You may never get an appropriate solution to your problem. The PDF format can encode text either as ASCII values with a font applied, or it can encode it as a bitmap. If the tool that created your PDF decided to encode the special characters as a bitmap, you will be out of luck (unless you want to get into OCR solutions, of course).
Я не пользуюсь Perl, но полагаю, вам будет сложно найти лучший бесплатный экстрактор текста, чем pdftotext.
pdftotext. обычно нормально распознает символы, отличные от ASCII, возможно ли, что он нормально их извлекает, но приложение, которое вы используете для просмотра текстового файла, не использует правильную кодировку? Если pdftoetxt в Windows совпадает с pdftoetxt в моей системе Linux, то по умолчанию он экспортируется как utf-8.
Взгляните на PDFBox . Это библиотека, но я думаю, что в ней также есть инструмент для извлечения текста.