Возможно, вы захотите использовать время, доказанное xPDF , и производные инструменты для извлечения текста вместо этого, поскольку pyPDF2, похоже, имеет различные проблемы с сохранением текста.
. Долгий ответ заключается в том, что существует множество вариантов того, как текст кодируется внутри PDF и что он может потребоваться для декодирования самой строки PDF, тогда может потребоваться сопоставить с CMAP, тогда может потребоваться проанализировать расстояние между словами и буквами и т. д.
В случае повреждения PDF-файла (т. е. отображения правильного текста, но при копировании он дает мусор), и вам действительно нужно извлечь текст, тогда вы можете захотеть преобразовать PDF в изображение (используя ImageMagik ), а затем используйте Tesseract , чтобы получить текст с изображения с помощью OCR.
Чтобы решить проблему с J2ee Spec, мне нужно было добавить кеш-уровень = 0 для входящего шлюза.
<int-jms:inbound-gateway
id="springbatch.master.inbound.gateway"
connection-factory="springbatch.jmsConnectionFactory"
request-channel="springbatch.slave.jms.request"
request-destination="springbatch.partition.jms.requestsQueue"
reply-channel="springbatch.slave.jms.response"
concurrent-consumers="${springbatch.partition.concurrent.consumers}"
max-concurrent-consumers="${springbatch.partition.concurrent.maxconsumers}"
max-messages-per-task="${springbatch.partition.concurrent.maxmessagespertask}"
reply-time-to-live="${springbatch.partition.reply.time.to.live}"
cache-level="0"
/>