Страница 1 из 1

Разложить PDF на составляющие или отпарсить PDF

СообщениеДобавлено: 08.09.2017 10:39:11
vitaly_l
Всем доброго дня и хорошего настроения!

Есть PDF файл, в нём куча картинок и описания к ним. Тексты, хранятся в виде текстов их можно копировать и вставлять в блокнот.

Собственно, вопрос:
чем можно конвертировать PDF в нормальный формат типа TXT или XML или HTML, чтобы при конвертации можно было как-то сохранить структуру ?
В общем по сути, нужно отпарсить PDF и получить названия, тексты и т.д.

Есть такие модули?
спасибо.

Re: Разложить PDF на составляющие или отпарсить PDF

СообщениеДобавлено: 08.09.2017 10:57:44
zub
Есть, но в зайчаточном состоянии https://svn.freepascal.org/cgi-bin/view ... ot=lazarus
Такчто несветит

Re: Разложить PDF на составляющие или отпарсить PDF

СообщениеДобавлено: 08.09.2017 14:53:27
vitaly_l
zub писал(а):несветит

Светит. на пошипи, есть же примеры, наверняка и на паскале есть.
Нужно просто поискать или быть может кто уже нашёл и поделится.

Re: Разложить PDF на составляющие или отпарсить PDF

СообщениеДобавлено: 08.09.2017 15:20:22
Лекс Айрин
vitaly_l, кстати, в нормальном PDF-ридере есть возможность импорта картинок. Ну и текста, естественно. Ну и есть возможность его рипа в офисные форматы.

Re: Разложить PDF на составляющие или отпарсить PDF

СообщениеДобавлено: 08.09.2017 15:39:49
vitaly_l
Лекс Айрин писал(а):офисные форматы.

Мне нужен HTML или XML или такой формат, чтобы я мог отделить где там заголовок, а где текст, а где фото и т.д. все запчасти для парсинга. То что выдаёт например OpenOffice или Микрософт при экспорте в HTML - я бы убивал за такое. Поэтому офисные форматы не подходят, т.к. там каждая буква - новый тег.

Re: Разложить PDF на составляющие или отпарсить PDF

СообщениеДобавлено: 08.09.2017 16:09:07
Лекс Айрин
vitaly_l, так сохрани в xml. Хотя, имхо, ты преувеличиваешь. Вот начало текста преобразованного из doc в html с помощью Libre office...
Код: Выделить всё
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
   <title></title>
   <meta name="generator" content="LibreOffice 5.4.0.3 (Windows)"/>
   <meta name="created" content="2017-01-12T19:57:24.062000000"/>
   <meta name="changed" content="2017-08-17T19:23:45.707000000"/>
   <style type="text/css">
      @page { margin: 2cm }
      p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; orphans: 2; widows: 2 }
      p.western { font-family: "Times New Roman", serif; font-size: 12pt; so-language: ru-RU }
      p.cjk { font-family: "SimSun"; font-size: 12pt; so-language: zh-CN }
      p.ctl { font-family: "Mangal"; font-size: 12pt; so-language: hi-IN }
      p.sdfootnote-western { margin-left: 0.6cm; text-indent: -0.6cm; margin-bottom: 0cm; font-family: "Times New Roman", serif; font-size: 10pt; so-language: ru-RU; line-height: 100% }
      p.sdfootnote-cjk { margin-left: 0.6cm; text-indent: -0.6cm; margin-bottom: 0cm; font-family: "SimSun"; font-size: 10pt; so-language: zh-CN; line-height: 100% }
      p.sdfootnote-ctl { margin-left: 0.6cm; text-indent: -0.6cm; margin-bottom: 0cm; font-family: "Mangal"; font-size: 10pt; so-language: hi-IN; line-height: 100% }
      a.sdfootnoteanc { font-size: 57% }
   </style>
</head>
<body lang="ru-RU" text="#000000" dir="ltr">
<p align="center" style="margin-right: 0.1cm; margin-bottom: 0cm; font-style: normal; line-height: 100%">
<font face="Majestic, cursive"><font size="6" style="font-size: 28pt"><b>Барби</b></font></font></p>
<p class="western" align="justify" style="text-indent: 1cm; margin-bottom: 0cm; line-height: 100%">
<font size="2" style="font-size: 11pt"><i>Я – барби. Точнее,
биоморф классического типа, модификация
барби, подтип 173. Киборг класса научник
Анжелика. Но все меня привыкли звать
просто барби Лика.</i></font></p>
<p class="western" align="justify" style="text-indent: 1cm; margin-bottom: 0cm; line-height: 100%">
<font size="2" style="font-size: 11pt"><i>Почти до шестнадцати
лет я  была вполне нормальным подростком...
даже немного пухлым. Но за месяц до
годовщины произошла предопределенная
трансформация. Мне еще сильно повезло
– у некоторых она происходит и в семь
лет, а у других в задерживается до сорока,
а то и до пятидесяти. Да и проспала я
всего две недели. В принципе, я с детства
знала, что мне подобное грозит – оба
родителя биоморфы: мать Барби (подтип
64), а отец  Питер Пен (подтип 16).</i></font></p>....



В принципе, вполне чистый текст.

Re: Разложить PDF на составляющие или отпарсить PDF

СообщениеДобавлено: 08.09.2017 16:14:57
vitaly_l
Лекс Айрин писал(а):В принципе, вполне чистый текст.

Не это какой-то хороший текст. Обычно, там экспортируется каждая строчка - новый тег. А если вначале это ещё и конвертнуть из PDF то там вообще будет один мусор.

Re: Разложить PDF на составляющие или отпарсить PDF

СообщениеДобавлено: 08.09.2017 16:37:43
Лекс Айрин
vitaly_l писал(а):Не это какой-то хороший текст.


Это просто текст, без картинок, в котором каждый абзац преобразовался в тег <p>

Тот же текст в MS office дает картину чуть хуже, но не критично -- в основном, разбухший заголовок. Если бы были картинки, то картина в обоих случаях было бы одинаковая.

vitaly_l писал(а): А если вначале это ещё и конвертнуть из PDF то там вообще будет один мусор.


А ты попробуй конвернуть в pdf и просто скопировать текст, вставить его обратно в вордовский файл, включить показ скрытых символов... и обнаружишь странную весчь... нормально выглядящий текст превращается в нечто вроде dos-txt -- каждая строка завершается принудительным переносом. Так что тут редиска как раз таки pdf формат.

Re: Разложить PDF на составляющие или отпарсить PDF

СообщениеДобавлено: 08.09.2017 19:27:34
pupsik
vitaly_l ghostscript вроде что то может, или воспользоваться либами от свободных читалок (где то встречал их "скрещивание" с паскалем).

Re: Разложить PDF на составляющие или отпарсить PDF

СообщениеДобавлено: 09.09.2017 10:00:39
v-t-l

Re: Разложить PDF на составляющие или отпарсить PDF

СообщениеДобавлено: 09.09.2017 11:51:41
zub
>>Светит. на пошипи, есть же примеры, наверняка и на паскале есть.
Полностью силами fpc засветит только если сильно приложить руку к fpvectorial. Сторонними либами - светит при наличии таковых.

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

Re: Разложить PDF на составляющие или отпарсить PDF

СообщениеДобавлено: 09.09.2017 12:11:29
vitaly_l
v-t-l писал(а):https://www.google.by/search?q=pdf2html

Интересует именно лазарусовский модуль,
чтобы можно было не просто конвертировать, но и немножечко поколдовать при конвертации,
т.к. мне в итоге: ни HTML, ни PDF - ненужны.