Извлечение информации из PDF-файлов научных работ [закрыто]
Мне нужен механизм извлечения библиографических метаданных из PDF-документов, чтобы сохранить людей, вводящих их вручную или вырезающих и вставляющих их.
По крайней мере, название и аннотация. Список авторов и их принадлежность были бы хороши. Извлечение ссылок было бы удивительно.
В идеале это должно быть решение с открытым исходным кодом.
Проблема в том, что не все PDF-файлы кодируют текст, и многие из них не могут сохранить логический порядок текста, поэтому просто выполнение pdf2text дает вам строку 1 столбца 1, строку 1 столбца 2, строку 2 столбца 1 и т. д.
Я знаю, что есть много библиотек. Это идентификация реферата, названия авторов и т. д. о документе, который мне нужно решить. Это никогда не будет возможно каждый раз, но 80% сэкономит много человеческих усилий.
13 ответов:
Мне разрешено только по одной ссылке на публикацию, так что это все: страница руководства pdfinfo Linux
Это может получить название и авторов. Посмотрите на нижнюю часть страницы руководства, и там есть ссылка на www.foolabs.com/xpdf где можно найти открытый исходный код для программы, а также двоичные файлы для различных платформ.
Чтобы вытащить библиографические ссылки, посмотрите на cb2bib:
cb2Bib-это бесплатное, с открытым исходным кодом и мультиплатформенное приложение для быстрого извлечение неформатированных или нестандартизированных библиографических ссылок из электронных оповещений, веб-страниц журналов и файлов PDF.
Вы также можете проверить дискуссионные форумы по адресу www.zotero.org где эта тема уже обсуждалась.
Мы провели конкурс, чтобы решить эту проблему в Dev8D в Лондоне, февраль 2010 года, и в результате мы получили хороший маленький инструмент GPL, созданный в результате. Мы еще не интегрировали его в наши системы, но он есть в мире.
Может быть немного упрощенным, но Гугл "bibtex + Paper title" ussualy дает вам формализованную запись bibtex из ACM, Citeseer или других подобных сайтов отслеживания ссылок. Конечно, это предполагает, что статья не из не-вычислительного журнала: D
-- EDIT --
У меня такое чувство, что вы не найдете специального решения для этого, вы можете написать в Citation trackers, такие как citeseer, ACM и google scholar, чтобы получить идеи о том, что они сделали. Есть тонны других и ты возможно, их реализация не является закрытым исходным кодом, но и не в опубликованном виде. Существует множество исследовательских материалов на эту тему.
Исследовательская группа, частью которой я являюсь, изучила такие проблемы, и мы пришли к выводу, что алгоритмы извлечения рукописного текста или машинное обучение-это способ сделать это. Рукописные алгоритмы, вероятно, ваш лучший выбор.Это довольно сложная задача из-за возможного количества вариаций. Я предлагаю нормализовать PDF в текст (который вы получаете из любой из десятков программных библиотек PDF). Затем необходимо реализовать пользовательские алгоритмы разборки текста.
Я бы начал с конца PDF и посмотрел, какие существуют ключи цитирования - например, [1], [Автор-год], (Автор-год), а затем попытался бы разобрать следующее предложение. Вероятно, вам придется написать код для нормализации текста, который вы получаете из библиотеки (удаление лишних пробелов и т. д.). Я бы только искал ключи цитирования как первое слово a строка, и только для 10 страниц в документе-первое слово должно иметь разделители ключей-например, ' ['или' ('. Если никакие ключи не могут быть найдены на 10 страницах, то проигнорируйте PDF и отметьте его для человеческого вмешательства.
Вам может понадобиться библиотека, с которой вы можете дополнительно программно консультироваться для форматирования метаданных в цитатах-например, itallics имеют особое значение.
Я думаю, что вы можете потратить довольно много времени, чтобы получить рабочее решение, а затем непрерывный процесс настройки и добавление к алгоритмам слома/движку.
В этом случае я бы рекомендовал TET from PDFLIB
Если вам нужно быстро почувствовать, что он может сделать, загляните в поваренную книгу TET
Это не решение с открытым исходным кодом, но в настоящее время это лучший вариант, на мой взгляд. Он не зависит от платформы и имеет богатый набор языковых Привязок и коммерческую поддержку.
Я был бы счастлив, если бы кто-то указал мне на эквивалентную или лучшую альтернативу с открытым исходным кодом.Извлечь текст вы будете использовать функции
TET_xxx(), а для запроса метаданных вы можете использовать функцииpcos_xxx().Вы также можете использовать инструмент commanline для создания XML-файла, содержащего всю необходимую информацию.
tet --tetml word file.pdfЕсть примеры того, как обрабатывать TETML с помощью XSLT в Tet Cookbook
Что входит в состав TETML?
Вывод TETML кодируется в UTF-8 (на zSeries с USS или МВС: EBCDIC-UTF-8, см. www.unicode.org/reports/tr16), и включает в себя следующую информацию:: общие сведения о документах и метаданные текстовое содержание каждой страницы (слова или абзац) информация о глифе (название шрифта, размер, координаты) информация о структуре, например таблицы информация о размещенных на странице изображениях информация о ресурсах, т. е. шрифты, цветовые пространства и изображения сообщения об ошибках, если во время обработки PDF возникло исключение
Взгляните на iText. Это библиотека Java, которая позволит вам читать PDF-файлы. Вы по-прежнему будете сталкиваться с проблемой поиска правильных данных, но библиотека предоставит информацию о форматировании и компоновке, которая может быть полезна для определения цели.
Другой библиотекой Java, чтобы попробовать было бы PDFBox. PDF-файлы действительно предназначены для просмотра и печати, поэтому вы определенно хотите, чтобы библиотека сделала для вас часть тяжелой работы. Даже в этом случае вам, возможно, придется немного склеить фрагменты текста, чтобы получить данные, которые вы хотите извлечь. Удачи Вам!
Взгляните на эту исследовательскую работу- точное извлечение информации из исследовательских работ с использованием условных случайных полей
Для начала работы с CRFs можно использовать пакет с открытым исходным кодом, например Stanford NER.
Или, возможно, вы могли бы попробовать импортировать их (исследовательские работы) в Менделея. По-видимому, он должен извлечь для вас необходимую информацию.
Надеюсь, это поможет.
Вот что я делаю, используя linux иcb2bib .
- Откройте cb2bib и убедитесь, что соединение с буфером обмена включено, а база данных ссылок загружена
- Найдите свою статью в google scholar
- Нажмите кнопку "Импортировать в bibtex" под бумагой
- выделите (выделите) все на следующей странице (т. е., код бибтекса)
- Теперь он должен быть отформатирован в cb2bib
- Теперь дополнительно нажмите Поиск по сети (значок глобуса), чтобы добавить дополнительные информация.
- Нажмите кнопку Сохранить в cb2bib, чтобы добавить документ в базу данных ref.
Повторите это для всех газет. Я думаю, что в отсутствие метода, который надежно извлекает метаданные из PDF-файлов, это самое простое решение, которое я нашел.
Я рекомендую gscholar в сочетании с pdftotext.
, хотя и в формате PDF содержит мета-данные, она редко заполняется правильное содержание. Часто вместо поля заголовка, например, стоит "None" или "Adobe-Photoshop" или другие немые строки. Вот почему ни один из вышеперечисленных инструментов не может получить правильную информацию из PDF-файлов, поскольку заголовок может находиться в любом месте документа. Другой пример: многие материалы конференции также могут иметь название конференции., или название редакторов, которое путает автоматические инструменты извлечения. Результаты тогда совершенно неверны, когда вы интересуетесь реальными авторами статьи.
Поэтому я предлагаю полуавтоматический подход с участием google scholar.
- преобразуйте PDF-файл в текст, чтобы можно было извлечь: автора и название.
- вторая копия вставьте часть этой информации и запросите google scholar. Чтобы автоматизировать это, я использую классный скрипт python gscholar.py.
Так что в реальной жизни это что я делаю:
me@box> pdftotext 10.1.1.90.711.pdf - | head Computational Geometry 23 (2002) 183–194 www.elsevier.com/locate/comgeo Voronoi diagrams on the sphere ✩ Hyeon-Suk Na a , Chung-Nim Lee a , Otfried Cheong b,∗ a Department of Mathematics, Pohang University of Science and Technology, South Korea b Institute of Information and Computing Sciences, Utrecht University, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands Received 28 June 2001; received in revised form 6 September 2001; accepted 12 February 2002 Communicated by J.-R. Sack me@box> gscholar.py "Voronoi diagrams on the sphere Hyeon-Suk" @article{na2002voronoi, title={Voronoi diagrams on the sphere}, author={Na, Hyeon-Suk and Lee, Chung-Nim and Cheong, Otfried}, journal={Computational Geometry}, volume={23}, number={2}, pages={183--194}, year={2002}, publisher={Elsevier} }EDIT: будьте осторожны, вы можете столкнуться с капчами. Еще один замечательный сценарий- bibfetch .
Только что найден pdftk ... это удивительно, поставляется в двоичном дистрибутиве для Win / Lin / Mac, а также source.
Фактически, я решил свою другую проблему (посмотрите на мой профиль, я спросил, а затем ответил на другой вопрос pdf .. не могу связать из-за ограничения на 1 ссылку).
Он может выполнять извлечение метаданных pdf, например, это вернет строку, содержащую заголовок:
pdftk test.pdf dump_data output test.txt | grep -A 1 "InfoKey: Title" | grep "InfoValue"Он может сбрасывать заголовок, автора, мод-дату и даже закладки и номера страниц (тестовый pdf имел закладки)... очевидно, что потребуется немного работы, чтобы правильно grep выход, но я думаю, что это должно соответствовать вашим потребностям.
Если в ваших PDF-файлах нет метаданных (т. е. нет "абстрактных" метаданных), вы можете создать текст с помощью другого инструмента, такого как pdf2text, и использовать некоторые трюки grep, как описано выше. Если ваши PDF-файлы не распознаны, у вас есть гораздо большая проблема, и специальный запрос pdf(ов) будет болезненно медленным (лучше всего для распознавания).
Несмотря на это, я бы рекомендовал вам вместо этого построить индекс ваших документов того, чтобы каждый запрос сканировал метаданные/текст файла.
PyPDF может помочь. Он предоставляет обширный API для чтения и записи содержимого PDF-файла (не зашифрованного), а также его записи на простом языке Python.
Попробуйте citeyoul. Это веб-сайт, который позволяет собрать библиотеку документов, назначить им теги, выполнить поиск и прикрепить комментарии. Он также позволяет добавить кнопку в веб-браузер, которая будет пытаться автоматически извлечь нужную информацию, включая аннотацию. Хотя на самом деле он не получает много от pdf. Однако, если вы наведете его на ссылку на документ по стандарту IEEE Эксплорер, citeseer, или много журнал сайтах, это, как правило, в состоянии сделать все так как информация.
Дело в том, что PDF-файлы часто не имеют всей информации о цитировании для начала. Обычно у вас есть название и авторы, но не обязательно название конференции или год публикации. Имеет смысл сначала найти цитату для статьи на сайтах
, PubMed или в каком-то другом месте и извлечь оттуда информацию. В целом я нашел citeyoul чрезвычайно полезным для организации документов. Это также полезно для сотрудничества с другими людьми. Вы можете создавать группы, обмениваться документами, создавать форумы и т. д.
Экстрактор и минерализатор содержания СЕРМИНА
В основном написан на Java и доступен в виде открытого исходного кода на github.
Comments