Я хочу извлечь изображение для каждого вопроса в .pdf (экзаменационная работа , подобная этой ), чтобы они были разделены следующим образом:
Так, например, q1.png для вопроса 1, как указано выше, и снова для вопроса 2, 3 и т. д.
У меня есть тонны этих бумаг, которые мне нужно разделить на такие изображения, и все они должны быть заданной ширины. Чтобы вручную разрезать их с помощью программного обеспечения для захвата экрана, потребуется вечность.
Есть ли какое-нибудь программное обеспечение, которое может помочь мне в этом? Или хитрый метод или облегчение?
Adobe Acrobat DC позволяет мне обрезать все страницы до нужной ширины и расстояния от верхней части каждой страницы, и я могу сохранить их все как отдельные файлы .jpeg — это почти то, что мне нужно, за исключением того факта, что высота вопросов различается. .
Вы можете использовать различные распространенные инструменты Unix для манипулирования данными, хотя усилия могут не стоить того, если исходные PDF-файлы сильно различаются. Я пробовал следующее:
Преобразуйте pdf в PostScript, которым проще манипулировать, используя pdf2ps (часть ghostscript):
pdf2ps Question-paper.pdf out.ps
Просматривая этот файл, вы можете увидеть, как горизонтальные линии (на которых нужно написать ответ) нарисованы строкой подчеркивания: (_____________________________________________________________________________)
Используйте sed для преобразования подчеркиваний в пробелы:
sed <out.ps '/^(___________________________________________/s/_/ /g' >out2.ps
(Я попытался удалить строку, но код PostScript немного неясен и больше не работает, так что это проще всего). Теперь у нас есть страницы, которые мы можем преобразовать в изображения png с помощью ImageMagick:
convert -background white -alpha remove out2.ps -crop 450x500+40+40 -trim pic%02d.png
Это создает файлы pic01.png и т. д., по одному на страницу, обрезая их до прямоугольника размером 450x500 и смещением xy +40+40, а затем обрезая пробелы. Это оставляет видимым только вопрос или на странице продолжения остается только текст: «вопрос N продолжается». Вы можете обнаружить эти нежелательные изображения и удалить их по их небольшому размеру, который вы можете получить из
identify pic*.png
Однако, если в других ваших PDF-файлах не используется такая же простая техника подчеркивания для заполнения страницы, или если они по-разному смещают левую и правую страницы и т. д., вам придется каждый раз вручную настраивать команды.
ЕСЛИ во всех документах есть только номер вопроса в определенном диапазоне, скажем, первые 50 пикселей при преобразовании в изображение, тогда вы можете использовать ImageMagick и, возможно, немного сценариев (я бы использовал python ) , чтобы:
Если макет документов включает верхние и нижние колонтитулы, вам, возможно, придется установить область (области), которые будут учитываться, а также, если есть первая страница и т. Д., Возможно, вам придется пропустить страницы. Многое зависит от того, насколько последователен макет документов, если они все одинаковы, то написание такого сценария может стоить затраченных усилий.
Обратите внимание, что в примере, который вы привели, каждый вопрос начинается на новой странице, и вы можете определить начало раздела ответов по гистограмме, потому что это будет фиксированная высота пробела (белый), за которым следует фиксированная узкая высота черного - строка - так что, если это репрезентативно, вы можете начать с верхней части страницы, чтобы пропустить границу, определить шаблон для первой строки ответа, и у вас есть свой рост.
В этой статье также рассматривается ряд инструментов Python, которые вы также можете использовать, или вы можете просто разделить свои документы на страницы в виде изображений и использовать numpy/scipy , чтобы найти начало/конец.
Если, как следует из вашего вопроса, вы работаете в академических кругах, вы можете попросить коллегу, который преподает Python или обработку изображений, организовать это как семинар или небольшой проект.