Как выдернуть из векторной графики pdf-файла числен-е знач-я абсцисс и ординат точек?
Например, в файле https://pubs.geoscienceworld.org/gsa...1/7/735/131259 Fig. 1 закодирован, наверно, в виде векторной графики. Потому как там на графике нанесено огромное количество точек и у меня староватый комп, немного, слабо «тянет» и прям видно, когда перехожу на страницу файла с этим рисунком, как точки появляются, последовательно, одна за другой. Т.е. они там закодированы в виден численных данных, задающих геометрические координаты точек.
Мне то эти данные и нужно как-то вытянуть. Чтобы не оцифровывать график. Да и в данном случае – не очень то оцифруешь: точки, местами, так плотно налегают друг на друга, что невозможно их различить. Можно ли как-нибудь их выцарапать? Открыл этот pdf-ный файл блокнотом и, действительно, увидел там систематический ряд цифр, который, наверняка, как-то используется для построения графика. Но покумекав и не зная как программируется векторная графика в pdf – файле не смог сообразить как можно вытянуть абсциссы и ординаты точек (хотя бы с точностью до констант пропорциональности). Может здесь кто разбирается? А, может, есть какая-то готовая программка, которая автоматически вытягивает (хотя бы с точностью до констант пропорциональности) значения абсцисс и ординат графиков (pdf- файлов), заданных с помощью векторной графики (конечно, такая программа могла бы работать не для всех пэдээфок, а только для тех, в которых точки рисунков закодированы как в выше приведенном примере)? |
ничего не понял.. где, что закодировано?
Нажмите здесь, чтобы увидеть текст полностью
|
Точки первого рисунка как-то закодированы в виде чисел в пэдээфовском файле, задающих значения абсцисс и ординат графиков первого рисунка.
Т.е. в этом файле как-то зашит алгоритм того, что один кругляшек поставить с одним набором значений осей, другой - с другим и т.д. и эти численные зачтения как-то там "зашиты" в виде набора чисел. Мне их и нужно как-то декодировать, чтоб получить сами значения ординат (хотя бы с точностью до константы). Чтоб задать точку на графике можно по разному закодировать её положение. Можно, например, задать значения абсцисс и ординат, а можно задать её радиус и угол. В обсуждаемом пэдээфовском файле использован какой-то подобный способ и соответствующие числа в нём приведены (они видны текстовом редакторе). Но я не знаю какой. Если бы знал, то, думаю, открыл бы этот файл текстовым редактором, скопировал бы отуда эти числа и легко преобразовал бы их в значения абсцисс и ординат точек. И тогда проблема была бы снята. Мой вопрос, собственно, можно свести к тому, как там положение точек закодировано (ну или, может, программка какая есть простенькая, которая декодирует ...?)? |
Цитата:
|
lesha1974,
Merlin Cori, ну, некоторое кодирование там есть. Насколь я понимаю - заради оптимизации web-просмотра (данные в виде stream и что-то про /FlateDecode). На не очень шустром компе/нетолстом канале при просмотре в браузере это действительно может проявляться визуально как постепенное появление картинки/текста. Однако же графика там вполне себе "аналоговая" (растровая), т.е. картинка - это именно картинка, что хорошо заметно при просмотре с большим увеличением в виде характЕрной "пилы" по краям линий. |
Да: если ещё и очень крупное увеличение (открытого файла) сделать, то это ещё лучше проявляется и, может, будет видно и не только на не очень шустром компе. Да: не всё в пэдээфе бывает обычные картинки плюс текст: картинки, бывают, как-то кодируются аналитически. Но как (с таким часто сталкиваюсь в научных статьях, когда картинки получаются с помощью специальных математических программ)?
|
Цитата:
Картинка, "вмонтированная" в PDF, может быть векторной (SVG, EMF и т.п.), но от этого не перестаёт быть картинкой, со всеми вытекающими. Если она векторная, то извлечь оттуда саму картинку можно при помощи, например, LibreOffice Draw (открыть в нём PDF, правой кнопкой по картинке, "Сохранить"). Эту самую векторную картинку можно в дальнейшем редактировать в программе, поддерживающей соответствующий функционал. Но, подчеркну ещё раз: координаты точек в этой картинке практически никакого отношения к данным, по которым строился график, не имеют. Форма графика - да, схожая, но не более того... |
кто-нибудь может объяснить доступным IT-языком что требуется топ-стартеру?
если речь о картинке с графиком, то вот http://ipic.su/img/img7/tn/2013205.1619700440.jpg и никакого таинства в ней нет: обычный jpg, извлекаемый просто правой кнопкой мыши в Adobe Reader с последующей вставкой во что угодно, хотя бы в Paint, либо {если более продвинуто, то} прямым сохранением в файл из Adobe Acrobat Pro. |
Например, вот рисунок из статьи, ссылка на которую приведена в первом посте: https://pixs.ru/images/2021/04/29/Gig.1.png https://pixs.ru/image/G0Ulea .
В конечном счёте, мне нужно, чтобы в одной экселевской колонке стояли значения абсцисс точек этого рисунка, а в соседней колонке – соответствующие значения ординат. |
не вижу там такого. Ни в Firefox, ни в Хроме, ни в Яндексе, ни в IE
|
Да: оказывается, в первом своём посте дал ссылку, по которой этой статьи в свободном доступе нет. Пардон.
Вот её пэдээфка в свободном доступе: https://www.researchgate.net/profile...nent-cycle.pdf . |
Цитата:
А в скачанном "full-text pdf" - картинка состоит из отдельных элементов, встроенных непосредственно в файл (т.е. хоть и векторная графика, но не "одним куском", а каждая точка и каждый бар являются отдельными картинками. Думается мне, что их координаты на листе ещё менее полезны, чем даже кординаты точек в векторном рисунке... Правда, и извлечь их как бы проще: в обычном текстовом редакторе описание баров выгрядит так: Код:
31 0 obj Выдернуть эти цифры с сохранением в .csv можно простейшим cmd-скриптом. Что-то аналогичное, я полагаю, должно быть и для точек, но ковырять файл мне влом. Ибо долго, да и смысл сего действа для меня лично неочевиден... |
Аллилуйя!
на третий день исследований определились, наконец, с объектом исследований. :yees: :facepalm: Сие есть pdf свёрстанный в Adobe InDesign Указанный выше график, как верно стелепатировал Борланд - векторная графика. Открывается в Adobe Illustrator. Возможно и в CorelDraw, и ещё в чём-либо под вектор заточенном, но у меня ничего, кроме люстры, в данный момент под рукой нет, а ставить во имя торжества истины влом. Можно попробовать выделить и удалить всё лишнее, после чего экспортнуть (Save As) в SVG (просматривается браузерами), - он имеет более упорядоченный для восприятия и преобразования формат, имеющий какое-то подобие координат (хотя, я тоже не сказал бы что уж очень простой). Но как опять же, было верно замечено Борландом, - координаты эти "в попугаях", а не в каких-то фактических единицах измерения. Что делать дальше - хз :biggrin: http://depositfiles.com/files/fsrpf1kys Borland, ты не со страницы миниатюры открывай, а скачай "Download full-text PDF", там вектор всё-таки. |
Цитата:
По факту - один for, один find, одно echo. Смысл сего действа от меня по-прежнему ускользает...:idontnow: |
Borland, в svg тоже не всё так просто, полистай её.
Смысл действия мне тоже не очевиден, но осмысленную xml-подобную структуру я вроде выудил :biggrin: |
Вытащить нужные цифры я бы мог программным образом. Работаю в мэйпле и мне не составит огромного труда это сделать, если знал бы как выглядит структура команд в текстовом редакторе, задающих координаты точек.
Посмотрел, в текстовом редакторе, как часто встречается (в обсуждаемом файле) команда "Rect" и увидел, что всего 9 раз. Т.е. много реже, чем точек на графике. Что наводит меня на мысль, что точки на рисунке, который привёл выше, задаются, в обсуждаемом файле, с помощью чего-то другого. В текстовом редакторе там, например, видно очень много чисел, заданных последовательно идущими, через косую черту. командами CS0 1584 0 R . А так же идёт очень длинная серия типа 0000002631 00000 n 0000000000 00000 f 0000000000 00000 f 0000491047 00000 n 0000637422 00000 n 0000637137 00000 n 0000550993 00000 n 0000636843 00000 n 0000636549 00000 n 0000550403 00000 n 0000636258 00000 n 0000635963 00000 n 0000549790 00000 n 0000549489 00000 n 0000638001 00000 n 0000635671 00000 n 0000635375 00000 n 0000635073 00000 n 0000634766 00000 n 0000634456 00000 n 0000548562 00000 n 0000634148 00000 n 0000633643 00000 n 0000633337 00000 n 0000633023 00000 n 0000565266 00000 n 0000632709 00000 n 0000547360 00000 n ... Поэтому, у меня возникло предположение, что именно как-то так и закодированы точки графика. Но как это связать с координатами точек заданных хотя бы в "попугаях" - ума не приложу. П.С.: Извлечь численные данные координат точек (а не довольствоваться только рисунком) мне нужно для статистического анализа точек. Кроме того, как показал мой анализ, в данных должны сидеть колебания с циклами с сокращающимися периодами (от цикла к циклу в одно и то же количество раз). И такие циклы (для относительно больлшого их числа) просто невозможно увидеть в том масштабе времени, который показан в обсуждаемой статье: нужно этот масштаб, от цикла к циклу увеличивать. Либо поставить начало отсчёта времени в некоторый другой момент (чем в на рисунке статьи) и взять логарифмический масштаб. В частности, для этого мне и нужны численные данные координат точек, а не просто график, который приводится в статье. Сталкиваюсь с такой задачей часто и, поэтому, хотелось бы найти её решение раз повозившись с программкой по вытягиванию из текстового файла нужных цифр. Но то, что, как выше было отмечено, файл свёрстан в Adobe InDesign меня ободрило тем, что, может, вообще будет не надо писать упомянутую программку, а просто открыть в нём файл и где-то взять нужный набор цифр, может, идущих подряд (без лишнего). Ещё не попробовал ... |
Что-то не могу раздобыть подходящий Adobe InDesign. То не скачивается, то скачается, но не ставится (например, https://www.softprime.net/grafika/gr...s5-cs6-cc.html). Раз встало (Adobe InDesign CS5 ACE Exam Aid), но не запускалось. Грешу на то, что у меня - экспишка, но пишут, что рассчитано и на экспишку. У кого-нибудь нет такой проги (может, постарее ...)?
|
Цитата:
Ссылку на описание я не зря дал: InDesign - верстальщик печатной продукции, и PDF - не проект данного приложения, а сама эта самая печатная продукция (в электронном виде). Впрочем, и в проекте (уверен на 147%) никакого "нужного набора цифр" не было, а был вставлен график из какого-нибудь Экселя или тому подобного. Попытка, как говорится, - не пытка, а сам я особо не шаманил с импортом PDF обратно в Indesign, но склоняюсь к тому что будет именно так. Я написал в чем открывается данный файл. Что бы я начал делать дальше..? в иллюстраторе удалил бы всё, оставил только 2 точки на графике (панель слоев F7 для контроля в помощь) - сохранил в SVG под одним именем. Потом удалил одну из точек, оставил только одну, сохранил SVG под другим именем, потом сравнил 1 и 2 на текстовом уровне - понял как выглядят в них нужные данные, и развивал мысль уже от этой печки. |
Цитата:
Код:
<draw:path draw:style-name="gr178" draw:text-style-name="P143" draw:layer="layout" svg:width="0.093cm" svg:height="0.095cm" svg:x="7.818cm" svg:y="13.927cm" svg:viewBox="0 0 94 96" svg:d="M94 53c0 21-20 43-41 43-32 0-53-22-53-43 0-32 21-53 53-53 21 0 41 21 41 53z"> |
Цитата:
Что такое "иллюстратор"? Adobe InDesign? П.С.: у меня почему-то уведомление по e-mail на эту тему не происходит несмотря на то, что в подписке на тему стоит "моментальное уведомление по e-mail". |
Adobe Illustrator - векторный редактор из пакета Adobe Creative Cloud (откуда и индиз).
Но в свете моих сегодняшних опытов, я думаю, хватит и Цитата:
Цитата:
Цитата:
|
Цитата:
Чтобы потом с помощью экспорта в эксель из текста вытянуть цифры иксов и игреков в виде отдельных столбцов, а не возиться с программированием для вытягивания их программой непосредственно из исходного текста, последовательно перебирая его символы. Например, если бы была какая-то последовательность символов, на которую можно было бы в ворде заменить заданную последовательность символов (в данном случае, «cm" svg:viewBox=») и которая означала бы перенос строки в ворде, то проблема была бы решена. Но как это сделать в ворде – не знаю. |
lesha1974
"Стоя на лыжах в гамаке"... :gigi: fodg2csv.cmd Код:
@echo OFF Из fodg выдёргиваются строчки, содержащие "svg:x", из строчки выбираются ширина, высота, X и Y и выводятся в csv. А уже csv является практически "родным" форматом для ёкселя и замечательно импортируется в него. P.S. Обозначение "cm", если оно вам мешает, можно убрать стандартным "Поиском и заменой" в самом ёкселе. Если это делать в cmd - получится довольно громоздкая конструкция... |
Вложений: 3
Цитата:
У меня, изначально, был pdf, о котором речь шла в первых сообщениях темы. Потом, редакторами pdf, выкинул оттуда всё кроме графика. В результате получился тот pdf, который прикрепляю в этом сообщении. Потом переделал его в формат fodg , с помощью открытого офиса. Переделанное тоже прицепляю. Потом открыл это переделанное блокнотом и увидел там, в основном, серию однотипных операторов, среди которых иксы и игрики точек графиках в сантиметрах. Всё остальное, в блокноте, удалил и то, что получилось тоже прицепляю, сохранённое в текстовом файле. Если бы в этом текстовом файле вместо каждого набора символов «cm" svg:viewBox=» поставить "ввод" (на кнопку ввода на клавиатуре нажать; этот "ввод" сделал в прикреплённом текстовом файле для нескольких первых строк, но не удалял упомянутые символы), то полученный текстовый файл эксель уже сможет в себя легко экспортировать так, что в некоторых двух столбах будут стоять численные значения иксов и игриков. Отсюда у меня и возник вопрос как сделать такой "ввод" автоматически, чтобы не тыкать тысячи "вводов" на клавиатуре. Строго говоря, эти "вводы" достаточно поставить перед всеми последовательностями «cm" svg:viewBox=», которые есть в текстовом файле и, считай, задача будет решена (т.е. не обязательно удалять и саму эту последовательность; но т.к. я был ориентирован на какую-то готовую программку по замене символов, если такая существует, в ней можно было бы упомянутую серию символов заменить на серию символов, соответствующею нажатию на клавиатуре "ввод" и задача тоже была бы, считай, решена). |
Вложений: 1
Цитата:
Это батник. Скрипт командной оболочки Windows (cmd.exe). Создаётся в текстовом редакторе (хоть в стандартном "Блокноте"). Только не забудьте подставить свои значения в INPUTFILE и OUTPUTFILE (соответственно, пути к исходному файлу и файлу результата)... В аттаче: ваш текстовик (3-й вариант), переименованный в file.fodg; скрипт; результирующий file.csv. |
Ну надо же как, оказывается, коротко можно это сделать! Круто! У меня бы "километровый" текст в мэйпле получился бы... Ширина, высота - это наверно, характеристики размера кружков (точек графика; т.е. не являются искомыми данными)...
П.С.: посмотрел в ящике антиспамового фильтра - уведомлений там на эту тему не оказалось (и во "входящих" моего ящика - тоже нет). П.С1.: В 249 строчке "file" почему-то получился "мусор" (что, конечно, пущая мелочь ...). |
Цитата:
Цитата:
|
Часовой пояс GMT +4, время: 06:13. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.