LINUX.ORG.RU

Обработка сканированных документов

 , ,


5

5

Занимаюсь сейчас следующим делом.

Есть несколько сотен изображений со сканами чертежей. Их нужно обработать таким образом:

  1. На большинстве сканов лист лежит под небольшим углом. Нужно довернуть изображение на этот угол, чтобы выровнять картинку.
  2. Некоторые листы сканировались в несколько приёмов. Например, лист формата A3x4 сканирован в 5 приёмов с перекрытиями. Нужно из таких фрагментов собрать одно цельное изображение.
  3. Результаты нужно собрать в PDF.

Гуглю автоматически средства, которыми можно решить задачи 1 и 2.

Для первой нашел скрипт на питоне, который детектит прямые линии на листе. Планирую использовать его - доработать, чтобы автоматически определять угол поворота листа.

Для второй нашел еще один скрипт на питоне, который детектит общие опорные точки для склейки панорамы и по ним формирует изображение. Проверил - работает неплохо, но очень долго.

Дайте знать, если есть какие-то готовые решения, которые не требуют пилинг кода на питоне и баше. Я что-то не смог нагуглить.

★★

Последнее исправление: wandrien (всего исправлений: 2)

С п.2. не всё так просто, а вот п.1 - это называется deskew, гугли по этому слову.

Из опенсорсных программ можно посмотреть как это ScanTailor делает, также кажется и в гимпе есть такое средство.

Для разных интеллектуальных манипуляций с изображением широко известна библиотека OpenCV, там и поворот есть и склейки панорамы https://www.opencvhelp.org/tutorials/advanced/panorama-creation/

Но OpenCV действительно медленная. Насчёт чего-то более быстрого так сходу не подскажу.

Но в принципе общая проблема этих алгоритмов, что они не в 100% случаев правильно детектируют что надо сделать.

anonymous_incognito ★★★★★
()
Ответ на: комментарий от anonymous_incognito

Но в принципе общая проблема этих алгоритмов, что они не в 100% случаев правильно детектируют что надо сделать.

Угу, поэтому все равно придется каждый чертеж потом сидеть и руками как минимум проверять. Пачкой загрузить и получить крутой результат не получится.

Но это в целом норм ситуация. Скажем, распиаренный Lightroom тоже умеет одной кнопкой выравнивать заваленный горизонт, но иногда даже несмотря на очевидные прямые линии делает какой-то кувырок через зад и выдает непойми что.

Zhbert ★★★★★
()

Всем спасибо за советы.

По п.1 выкинул недоделанный скрипт на питоне и воспользовался вышеупомянутой утилитой на Паскале.

Закинул в обработку всё сразу, трудится:

find . -iname '*.png' | sort | grep -v -- '[-]deskewed[.]png$'| while IFS='' read f ; do
	echo "=> $f"
	output="`echo "$f" | sed 's/[.]png$/-deskewed.png/i'`"
	deskew -b FFFFFF -o "$output" "$f"
done

Результат неплохой получается, штук 20 файлов наугад посмотрел, поворот выполнен корректно.

Как закончит, буду насчёт п.2 соображать.

wandrien ★★
() автор топика
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от anonymous_incognito

Я лично не использовал утилиты для автоматического сшивания чертежей, только руками этим занимался и то результатом редко был доволен.

Погуглил, может вот такое справится: https://github.com/MenghanXia/AutoStitching

Truf
()

Скрипт, который автоматически сшивает фрагменты, работает плохо.

  1. На части изображений он падает.
  2. На части не может найти опорные точки или находит не на всех листах.
  3. Даже если находит, не всегда стыкует идеально ровно.
  4. Иногда всё-таки результат получается хороший.

Уверен, что скрипт можно допилить, но мне некогда.

Поэтому большую часть склеек переделываю вручную в гимпе.

Для частичной автоматизации использую это: https://shallowsky.com/software/pandora/

wandrien ★★
() автор топика

Вот такой штукой давеча распознал сотню криво сфотографированных листов. Они были собраны в пдф, а эта штука потом добавила текстовый слой. Я доволен, аки слон!

под капотом тессеракт

aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)
Ответ на: комментарий от wandrien

Иногда всё-таки результат получается хороший.

Ну кстати, не настолько уж и «иногда». Сейчас вот один из томов делаю, так из 27 листов около 3/4 он сшил без артифактов.

Вот он:

https://aur.archlinux.org/packages/stitch-scanned-images

wandrien ★★
() автор топика
Ответ на: комментарий от Xant1k

Обработал ею несколько сотен листов. Было всего с десяток сбоев, где он вместо выравнивания листа, довернул его в другую сторону еще больше. Все проблемы были на чертежах, где много прямых линий под небольшим углом к горизонтальной плоскости.

Еще на некоторых листах пришлось доворачивать на долю 0.1..0.3 градуса, так как он недовернул.

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

wandrien ★★
() автор топика