OCR форумы Добро пожаловать, Гость. Пожалуйста, выберите Вход или Регистрация
Всем привет!
Hi all!
 
  ГлавнаяСправкаПоискВходРегистрация Администратор Библиотека  
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать
Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов (Прочитано 16509 раз)
ksa242
Новичок
*
Вне Форума


Всем привет!

Сообщений: 19
Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
24.03.2014 :: 23:37:57
 
Оцифровывал намедни случайно попавшие в руки номера «Пионерской правды» и столкнулся с тем, что вменяемо собрать PDF весьма проблематично.  Вменяемо в моём понимании — это автоматически, в Linux'овой консоли, из обработанных картинок (в том числе нарезанных на сегменты: отдельно фон в B/W, отдельно фотографии в grayscale, отдельно цветные плашки картинками с палитрой), да с распознанным текстом из djvused-файла в UTF-8, ибо от бастарда hOCR тошнит.  hocr2pdf из состава exact-image (его использует pdfsandwich) не подошёл — в XXI веке не умеет UTF-8!  hocr-pdf из пакета hocr-tools понимает только hOCR и JPEG, и строго режет: одна картинка — одна страница.  Собрал PDF в Scribus'е — оказалось нечем подшить скрытый текстовый слой.  В общем, не было в жизни счастья.  Пришлось браться за Python…

Написал в итоге две утилитки: pdfsed-tools.  Первая конвертирует hOCR в любимый djvused и обратно с принудительным пересчётом координат, — и теперь, когда правлю распознанный текст вручную, я забочусь только о координатах отдельных слов.  Кроме того, конвертор позволяет пересчитать координаты под другое разрешение картинки — полезно, если вы случайно распознали исходник в 1200 dpi, а результат у вас должен быть, скажем, 200 dpi.

Вторая же утилита — это собственно генератор PDF.  Работает он по сценарию вроде такого:

Code:
set-title "Пионерская правда - 1961-063 (4502) - 8 августа";
set-author "Редактор: М. Н. Чернова";

create-page 842 1190;
draw-text "1/1.djvused";
draw-image "1/1-0-b.png";
draw-image "1/1-0-r-1.png" pos 45 1113 mask 0xffffff;
draw-image "1/1-0-r-2.png" pos 45 833 mask 0xffffff;
draw-image "1/1-0-r-3.png" pos 468 734 mask 0xffffff;
draw-image "1/1-0-r-4.png" pos 108 85 mask 0xffffff;
draw-image "1/1-0-r-5.png" pos 448 405 mask 0xffffff;
draw-image "1/1-1.png" pos 470 819;

create-page;
draw-text "2/2.djvused";
draw-image "2/2-0-b.png";
draw-image "2/2-1.png" pos 79 742 mask 0xffffff;
draw-image "2/2-2.png" pos 253 89;
draw-image "2/2-3.png" pos 554 89;

create-page;
draw-text "3/3.djvused";
draw-image "3/3-0-b.png";
draw-image "3/3-1.png" pos 56 510 mask 0xffffff;
draw-image "3/3-2.png" pos 541 431;

create-page;
draw-text "4/4.djvused";
draw-image "4/4-0-b.png";
draw-image "4/4-0-r-1.png" pos 66 978 mask 0xffffff;
draw-image "4/4-0-r-2.png" pos 235 359 mask 0xffffff;
draw-image "4/4-0-r-3.png" pos 66 99 mask 0xffffff;
draw-image "4/4-0-r-4.png" pos 572 99 mask 0xffffff;
draw-image "4/4-1.png" pos 234 470; 



(Именно так собирался номер 4502 «Пионерской правды» (PDF, 4,3 Мбайта, Dropbox).)

Что, собственно, делается скриптом?  Смотрим:

Code:
create-page 842 1190; 



Создаём новую страницу размером 842×1190 пунктов.

Code:
draw-text "1/1.djvused"; 



Добавляем на страницу скрытый текст из djvused-файла (можно скормить и hOCR).

Code:
draw-image "1/1-0-b.png"; 



Накладываем на страницу картинку из PNG-файла (не проверял, но уверен, что съест и JPEG; а вот TIFF пока не умеет…).  Здесь: весь текст и line-art чёрной краской.

Code:
draw-image "1/1-0-r-1.png" pos 45 1113 mask 0xffffff; 



Накладываем на то, что уже есть на странице, картинку из другого PNG-файла, да не просто так, а на определённое место (pos 45 1113, координаты в пунктах) и с прозрачным белым цветом (mask 0xffffff).  Здесь: один из блоков красной краской.

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

PS: Ах да, скрипту нужен Python v2.7+ с пакетами PIL/Pillow и ReportLab.  Результат рекомендуется оптимизировать чем-нибудь вроде QPDF — со сжатием у ReportLab'а не ахти.
Наверх
« Последняя редакция: 01.04.2014 :: 17:07:26 от ksa242 »  
 
IP записан
 
GMAP
Постоялец
**
Вне Форума


Всем привет!

Сообщений: 52
Somewhere there...
Пол: male
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #1 - 26.03.2014 :: 12:28:29
 
ksa242 писал(а) 24.03.2014 :: 23:37:57:
Начинайте плеваться и задавать вопросы насчёт религии, предпочтений и велосипедостроения.
Как сказал один умудренный опытом человек "Linux - всего лишь прокладка между Wine и виндовыми программами.". Холивар начинать не будем, но обратим внимание на откровенную кривизну этого pdf файла, часть фотографий исчезла. Вот так говорят адобовские програмы Ридер и Акробат:
----------
An error exists on this page. Acrobat may not display the page correctly. Please contact the person who created the PDF document to correct the problem.
Could not find the XObject named
'FormXob.b85afa25a8076ac92a69f61aded922cf'.
----------
То, что на неадобовских софтах отображается правильно, сути дела не меняет.
Наверх
 
 
IP записан
 
ksa242
Новичок
*
Вне Форума


Всем привет!

Сообщений: 19
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #2 - 26.03.2014 :: 19:49:42
 
GMAP писал(а) 26.03.2014 :: 12:28:29:
обратим внимание на откровенную кривизну этого pdf файла, часть фотографий исчезла. Вот так говорят адобовские програмы Ридер и Акробат


Adobe Acrobat Pro 10.1.9 на чужом компьютере отображает всё как надо, ошибок не выдаёт.  Плагин Google Docs/PDF Viewer для Chrome -- аналогично.  Пишите баг-репорт в «Спортлото» Adobe.
Наверх
 
 
IP записан
 
ksa242
Новичок
*
Вне Форума


Всем привет!

Сообщений: 19
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #3 - 27.03.2014 :: 00:34:44
 
GMAP писал(а) 26.03.2014 :: 12:28:29:
То, что на неадобовских софтах отображается правильно, сути дела не меняет.


Poppler, библиотека для отрисовки PDF, которой пользуются практически все вменяемые программы под Linux, с 2011 года полностью соответствует стандарту ISO 32001-1, он же 1.7 без проприетарных адобовских расширений.  Полагая, что стандарт описывает не только функционал, но и ожидаемый от рендерера результат, можно сделать вывод, что тот же самый Evince — стандартен.  А уж GhostScript пресловутый ещё десять лет назад, в молодость мою верстальную, в типографии нашей был единственным дозволенным поставщиком оборудования PS/PDF-растеризатором для основного ризографа.

Ну, а ReportLab, свободная версия которого собирает мне PDF, используют в тех же целях весьма именитые организации, как, к примеру, Hewlett Packard, которые могли себе позволить сотрудничество с Adobe, но отчего-то поступили иначе.
Наверх
« Последняя редакция: 27.03.2014 :: 04:20:10 от ksa242 »  
 
IP записан
 
GMAP
Постоялец
**
Вне Форума


Всем привет!

Сообщений: 52
Somewhere there...
Пол: male
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #4 - 27.03.2014 :: 08:03:11
 
ksa242 писал(а) 26.03.2014 :: 19:49:42:
Пишите баг-репорт в «Спортлото» Adobe.
Да я, собссно, другого ответа и не ожидал. Акробаты от 5-го до 11-го, Дистиллеры, GSView и еще куча других программ не Адобе ведут себя совершенно одинаково - выдают ошибки как при просмотре, так и при попытке конвертации. Но если Вы настолько убеждены насчет своего шагания в ногу, а всех остальных наоборот, не смею препятствовать. Продолжайте в том же духе. Только файл от этого не станет более прямым. Что до методики сборки и прочих комстрочных ухищрений, можно только посочувствовать линуксоидам - тащить корову на крышу всегда было неблагодарным занятием.
Цитата:
- Нет, понимаешь винда - это такая большая кнопка "сделай мне зашибись". Конечно, иногда она делает не зашибись, иногда не мне и иногда не делает, но обычно всё-таки у меня становится зашибись. В твоем же линуксе необходимо предварительно набрать 30 страниц описаний понятий "сделай" "я" и "зашибись" и если хоть раз ошибешься будет "сделай всем хреново".

Очень довольный 
Наверх
 
 
IP записан
 
ksa242
Новичок
*
Вне Форума


Всем привет!

Сообщений: 19
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #5 - 27.03.2014 :: 08:48:58
 
GMAP писал(а) 27.03.2014 :: 08:03:11:
Акробаты от 5-го до 11-го, Дистиллеры, GSView и еще куча других программ не Адобе ведут себя совершенно одинаково - выдают ошибки как при просмотре, так и при попытке конвертации.


Проверьте, файл целиком ли скачался?  Размер 4321509 байт, md5-хэш 00e5df46d4d04d65df9f76cd8c222a41.
Наверх
 
 
IP записан
 
GMAP
Постоялец
**
Вне Форума


Всем привет!

Сообщений: 52
Somewhere there...
Пол: male
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #6 - 27.03.2014 :: 12:15:15
 
ksa242 писал(а) 27.03.2014 :: 08:48:58:
Проверьте, файл целиком ли скачался?  Размер 4321509 байт, md5-хэш 00e5df46d4d04d65df9f76cd8c222a41.
Все соответствует. Косяки начинаются на второй странице, первая отображается нормально. Откройте свой файл в PDF Explorer и увидите, что все страницы состоят из отдельных частей, которые так и не были склеены воедино, что логично было бы ожидать для растровой графики. Если работали со слоями, надо в конце сделать Flatten layers, чтобы остался один слой, а не мозаика, это же не вектор плюс растр.
Наверх
 
 
IP записан
 
ksa242
Новичок
*
Вне Форума


Всем привет!

Сообщений: 19
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #7 - 27.03.2014 :: 16:06:29
 
Цитата:
Все соответствует. Косяки начинаются на второй странице, первая отображается нормально.


Ну вот, можете же «репортить баги», когда захотите.  Косяк найден.  Вот исправленный вариант: dropbox, 4,5 Мбайта.  Видите на второй и третьей страницах фото без уголков?  На них подглючивало reportlab, пока не добавил альфа-канал.  Проблему удалось выловить только в GS.

GMAP писал(а) 27.03.2014 :: 12:15:15:
Если работали со слоями, надо в конце сделать Flatten layers, чтобы остался один слой, а не мозаика, это же не вектор плюс растр.


Ради мозайки всё и затевалось, перечитайте исходное сообщение!  Подложка с текстом в lineart и N dpi, сверху фотографии в grayscale и N/2 dpi, ещё выше — элементы второй краской в lineart и т. п.  (Да-да, знаю, что чёрная печатается последней, но то ж печать…)  А Вы предлагаете согнать всё как минимум в два канала grayscale и либо текст обделить dpi, либо фотографиям лишнего весу дать…  PDF — это же язык описания страниц и оперирует объектами: взят этот, вклеить туда, масочку этакую наложить и пр.; давайте же пользоваться предоставленными возможностями.
Наверх
« Последняя редакция: 27.03.2014 :: 16:17:12 от ksa242 »  
 
IP записан
 
GMAP
Постоялец
**
Вне Форума


Всем привет!

Сообщений: 52
Somewhere there...
Пол: male
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #8 - 27.03.2014 :: 20:11:42
 
ksa242 писал(а) 27.03.2014 :: 16:06:29:
А Вы предлагаете согнать всё как минимум в два канала grayscale и либо текст обделить dpi, либо фотографиям лишнего весу дать…
Это где же я такое предлагал? Мы не поймем друг друга, поскольку я пользуюсь набором инструментов, причем, WYSIWYG, а Вы консолями. Если есть готовые файлы черного текста, красных вставок и серых фото, свести все это воедино, одним слоем pdf, не представляет никакой сложности. Акробат с плагинами делает это влегкую. Хотя для такой макулатуры я бы не стал заморачиваться с красным цветом, а бинаризовал бы вместе с текстом, содержание от этого ничуть бы не пострадало.
Наверх
 
 
IP записан
 
ksa242
Новичок
*
Вне Форума


Всем привет!

Сообщений: 19
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #9 - 27.03.2014 :: 21:25:39
 
Цитата:
Это где же я такое предлагал?


Flatten image кто мне предлагал?  Впрочем, кто знает, что Вы под этим имели в виду.

Цитата:
Акробат с плагинами делает это влегкую.


С распознанным текстом справится? Это ключевой момент, без него я и сам могу в Scribus'е (о чём опять-таки уже писал).

Цитата:
Хотя для такой макулатуры я бы не стал заморачиваться с красным цветом


Согласен насчёт макулатуры, но раз попросили — сделал.
Наверх
« Последняя редакция: 27.03.2014 :: 21:36:18 от ksa242 »  
 
IP записан
 
GMAP
Постоялец
**
Вне Форума


Всем привет!

Сообщений: 52
Somewhere there...
Пол: male
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #10 - 29.03.2014 :: 08:16:08
 
К вопросу об инструментах - тот же файл, но обработанный компрессором, вроде все на месте, даже OCR, но размер в три с лишним раза меньше - http://rghost.ru/private/53550261/0d8ba5908df11e8aceed26db9a499c0c
Наверх
 
 
IP записан
 
ksa242
Новичок
*
Вне Форума


Всем привет!

Сообщений: 19
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #11 - 30.03.2014 :: 19:40:34
 
GMAP писал(а) 29.03.2014 :: 08:16:08:
К вопросу об инструментах - тот же файл, но обработанный компрессором, вроде все на месте, даже OCR, но размер в три с лишним раза меньше - http://rghost.ru/private/53550261/0d8ba5908df11e8aceed26db9a499c0c


Картинки в JPEG2000 и в JBIG2 вместо TIFF/Zip и TIFF/G4, да ещё и нарублены на куски (28 вместо исходных 20); текст заметно хуже (но читабелен); тестовая растеризация заняла 45 с против 5 с (AMD A4-5400, GS, TIFF/LZW @ 300 dpi). Однако, почему бы и нет? Была б профессиональная нужда — выложил бы по Вашему примеру 59 евро за программу.
Наверх
 
 
IP записан
 
GMAP
Постоялец
**
Вне Форума


Всем привет!

Сообщений: 52
Somewhere there...
Пол: male
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #12 - 31.03.2014 :: 06:06:34
 
ksa242 писал(а) 30.03.2014 :: 19:40:34:
выложил бы по Вашему примеру 59 евро за программу.
Шутить изволите? Есть совершенно другие методы  Улыбка Тормоза при просмотре есть, как не быть, а вот насчет остального не могу согласиться, деградации на черно-белом тексте не заметно. Оригинал качеством не блещет, отсюда и ноги растут. Кроме того, это было нечто вроде шутки. А насчет Flatten layers почитайте описание к Акробату. Хотя, если сидите на Линухе, то о каких Акробатах может быть речь? Разве что под Wine. Нет под Линухом нормального инструментария для pdf, поэтому Вам приходится решать все консолью, долго и трудно, те задачи, для которых достаточно несколько щелчков мышкой. Но убеждения - дело святое, доказывать что ехать важнее "шашечек" не стану.
Наверх
 
 
IP записан
 
ksa242
Новичок
*
Вне Форума


Всем привет!

Сообщений: 19
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #13 - 31.03.2014 :: 10:20:21
 
GMAP писал(а) 31.03.2014 :: 06:06:34:
Шутить изволите? Есть совершенно другие методы  Улыбка


"Семён Семёныч…"  Я вполне серьёзно.  Выбирая OS и инструменты, принимайте правила игры.

Цитата:
Нет под Линухом нормального инструментария для pdf, поэтому Вам приходится решать все консолью, долго и трудно, те задачи, для которых достаточно несколько щелчков мышкой.


Всё верно, пришлось потратить два вечера на pdfsed-tools. При условии подговки картинок-слоёв в графическом редакторе (как же иначе?) работа с ним идёт не медленнее, чем в Scribus'е (всё равно, куда координаты картинок-слоёв вбивать — в текстовый редактор или в GUI-форму), а генерация PDF — быстрее за отстутствием промежуточных шагов (выбор страниц, настройка экспорта).  QPDF, тестовая растеризации, PDF-вьюер вызываются автоматически.  Вам мышой быстрее? На здоровье.

PS: Второй раз спрашиваю: вот OCR выдал текст в hOCR/djvused/что-то иное с координатами отдельных слов; в Acrobat я смогу его поместить в PDF?  Мне правда интересно.
Наверх
« Последняя редакция: 31.03.2014 :: 11:36:51 от ksa242 »  
 
IP записан
 
GMAP
Постоялец
**
Вне Форума


Всем привет!

Сообщений: 52
Somewhere there...
Пол: male
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #14 - 31.03.2014 :: 19:53:33
 
ksa242 писал(а) 31.03.2014 :: 10:20:21:
Второй раз спрашиваю: вот OCR выдал текст в hOCR/djvused/что-то иное с координатами отдельных слов; в Acrobat я смогу его поместить в PDF?  Мне правда интересно.
Я не знаю что такое "hOCR/djvused" и с чем его едят. В Акробате есть ClearScan и IRIS-овский движок OCR, поэтому никогда не извращался с встраиванием стороннего текста OCR.
Наверх
 
 
IP записан
 
ksa242
Новичок
*
Вне Форума


Всем привет!

Сообщений: 19
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #15 - 01.04.2014 :: 16:47:10
 
GMAP писал(а) 31.03.2014 :: 19:53:33:
Я не знаю что такое "hOCR/djvused" и с чем его едят.


Это форматы вывода OCR с координатами отдельных слов и логическим делением текста на строки, параграфы, колонки; его выдают tesseract и cuneiform.  Но фактически hOCR — это HTML.  А djvused — это кошерный аналог от создателей DjVu, без притащенного из HTML мусора; получить его, насколько я знаю, можно только конвертированием из hOCR или от tesseract'а с моим патчем.

Цитата:
В Акробате есть ClearScan и IRIS-овский движок OCR


Здорово!  Какие языки поддерживает?
Наверх
 
 
IP записан
 
GMAP
Постоялец
**
Вне Форума


Всем привет!

Сообщений: 52
Somewhere there...
Пол: male
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #16 - 02.04.2014 :: 14:00:27
 
ksa242 писал(а) 01.04.2014 :: 16:47:10:
Какие языки поддерживает?
Много, наверное, почти все общеупотребительные. Движок уступает FR/OP, но много лучше халявных тессерактов и прочих недоделок.
Наверх
 
 
IP записан
 
ksa242
Новичок
*
Вне Форума


Всем привет!

Сообщений: 19
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #17 - 02.04.2014 :: 15:52:50
 
GMAP писал(а) 02.04.2014 :: 14:00:27:
Движок уступает FR/OP, но много лучше халявных тессерактов и прочих недоделок.


А давайте это подтвердим.  Вот заметка из газеты 1988 года, b/w, 600 dpi.  Вот выхоп Tesseract.  Давайте результат Acrobat'овского OCR.
Наверх
 
 
IP записан
 
GMAP
Постоялец
**
Вне Форума


Всем привет!

Сообщений: 52
Somewhere there...
Пол: male
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #18 - 02.04.2014 :: 18:05:20
 
ksa242 писал(а) 02.04.2014 :: 15:52:50:
Вот заметка из газеты 1988 года, b/w, 600 dpi
Не уловил, после какой именно операции у Вас получаются такие, гм... результаты. В чем проблема - не получается толком отсканировать, обработать, бинаризовать или очистить? Или все перечисленное разом? Улыбка Выложите исходный скан 300/600 dpi, но серый, а на этом b/w мусоре бесполезно проверять. Даже FR выдает массу ошибок.
Наверх
 
 
IP записан
 
ksa242
Новичок
*
Вне Форума


Всем привет!

Сообщений: 19
Re: Консольный сборщик PDF из нарезки сканов и hocr/djvused-файлов
Ответ #19 - 03.04.2014 :: 11:33:42
 
GMAP писал(а) 02.04.2014 :: 18:05:20:
Не уловил, после какой именно операции у Вас получаются такие, гм... результаты. В чем проблема - не получается толком отсканировать, обработать, бинаризовать или очистить?


Отсканировано специально сразу в 600 dpi b/w безо всякой обработки.  Не томите, расчехляйте Acrobat'овский OCR.
Наверх
 
 
IP записан
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать