В реальном времени + сборка "мусора" не соответствует очень хорошо, я боюсь.
немного трудно сделать любые гарантии ответа в режиме реального времени, если сборщик "мусора" может умереть когда-либо и потратить неопределенный объем обработки...
Мы провели конкурс на решение этой проблемы на Dev8D в Лондоне, февраль 2010 г., и в результате получили небольшой симпатичный инструмент GPL. Мы еще не интегрировали его в наши системы, но он есть в мире.
Может показаться немного упрощенным, но поиск в Google «bibtex + paper title» обычно дает вам отформатированную запись bibtex из ACM, Citeseer или других подобных сайтов отслеживания ссылок. Конечно, это предполагает, что статья не из журнала, не связанного с вычислительной техникой: D
- EDIT -
У меня такое чувство, что вы не найдете для этого специального решения, вы можете написать для цитирования трекеры, такие как citeseer, ACM и google scholar, чтобы получить идеи о том, что они сделали. Есть множество других, и вы можете обнаружить, что их реализации не являются закрытыми, но не в опубликованной форме. По этой теме существует множество исследовательских материалов.
Группа исследователей, в которой я работаю, рассмотрела такие проблемы, и мы пришли к выводу, что рукописные алгоритмы извлечения или машинное обучение - это способ сделать это. Рукописные алгоритмы, вероятно, лучший выбор.
Это довольно сложная проблема из-за большого количества возможных вариаций. Я предлагаю преобразовать PDF в текст (который можно получить из любой из десятков программных библиотек PDF). Затем вам необходимо реализовать собственные алгоритмы удаления текста.
Я бы начал в обратном направлении с конца PDF-файла и посмотрел, какие существуют ключи цитирования - например, [1], [автор-год], (автор-год) а затем попробуйте разобрать следующее предложение. Вероятно, вам придется написать код для нормализации текста, который вы получаете из библиотеки (удаление лишних пробелов и т. Д.). Я бы стал искать ключи цитирования только в качестве первого слова в строке и только для 10 страниц в документе - первое слово должно иметь разделители ключей - например, '[' или '('.
В этом случае я бы рекомендовал TET из PDFLIB
Если вам нужно быстро понять, на что он способен, взгляните на Поваренную книгу TET
Это не решение с открытым исходным кодом, но в настоящее время оно является лучшим вариант на мой взгляд. Он не зависит от платформы и имеет богатый набор языковых привязок и коммерческую поддержку.
Я был бы счастлив, если бы кто-нибудь указал мне на эквивалентную или лучшую альтернативу с открытым исходным кодом. MVS: EBCDIC-UTF-8, см. Www.unicode.org/reports/tr16) и включает следующую информацию: общая информация о документе и метаданные текстовое содержимое каждой страницы (слова или абзац) информация о глифе (название шрифта, размер, координаты) структурная информация, например таблицы информация о размещенных изображениях на странице информация о ресурсах, например шрифты, цветовые пространства и изображения сообщения об ошибках, если во время обработки PDF возникло исключение
Взгляните на iText . Это библиотека Java, которая позволит вам читать PDF-файлы. Вы по-прежнему столкнетесь с проблемой поиска нужных данных, но библиотека предоставит информацию о форматировании и макете, которая может быть использована для определенных целей.
Еще одна библиотека Java, которую можно попробовать, - PDFBox . PDF-файлы действительно предназначены для просмотра и печати, поэтому вам определенно нужна библиотека, которая сделает за вас часть тяжелой работы. Даже в этом случае вам, возможно, придется немного склеить фрагменты текста, чтобы получить данные, которые вы хотите извлечь. Удачи!
PyPDF может помочь. Он предоставляет обширный API для чтения и записи содержимого файла PDF (незашифрованного), и он написан на простом языке Python.
Мне разрешено использовать только одну ссылку для каждого сообщения, так что вот оно: pdfinfo Страница руководства Linux
Здесь можно указать название и авторов. Посмотрите внизу страницы руководства, и там есть ссылка на www.foolabs.com/xpdf, где можно найти открытый исходный код для программы, а также двоичные файлы для различных платформ.
Чтобы вытащить библиографические ссылки, посмотрите at cb2bib :
cb2Bib - бесплатное многоплатформенное приложение с открытым исходным кодом для быстрого извлечения неформатированных или нестандартных библиографических ссылок из предупреждений по электронной почте, веб-страниц журналов и файлов PDF.
Вы также можете хочу проверить дискуссионные форумы на www.zotero.org, где обсуждалась эта тема.
Только что нашел pdftk ... это потрясающе, поставляется в двоичном дистрибутиве для Win / Lin / Mac, а также в качестве исходного кода.
Фактически, я решил свою проблему. другая проблема (посмотрите мой профиль, я спросил, а затем ответил на другой вопрос в формате pdf .. не могу связать из-за ограничения на 1 ссылку).
Он может извлекать метаданные PDF, например, это вернет строку, содержащую заголовок:
pdftk test.pdf dump_data output test.txt | grep -A 1 "InfoKey: Title" | grep "InfoValue"
Он может выгрузить заголовок, автора, дату модификации и даже закладки и номера страниц (в тестовом PDF-файле были закладки) ... очевидно, что потребуется немного поработать, чтобы правильно выполнить grep, но я думаю, что это должно соответствовать вашему
Если в ваших PDF-файлах нет метаданных (т. е. нет метаданных "Abstract"), вы можете скопировать текст с помощью другого инструмента, такого как pdf2text, и использовать некоторые уловки grep, как указано выше. Если ваши PDF-файлы не OCR, у вас гораздо более серьезная проблема,
Попробуйте citeyoulike . Это веб-сайт, который позволяет вам собрать библиотеку документов, присвоить им теги, выполнить поиск по ним и прикрепить комментарии. Он также позволяет вам добавить кнопку в ваш веб-браузер, которая будет пытаться автоматически извлекать необходимую информацию, включая аннотацию. Хотя это не так уж много из PDF. Однако, если вы укажете ссылку на статью в IEEE explorer, citeseer или на многих сайтах журналов, обычно можно получить всю информацию о bibtex.
Дело в том, что PDF-файлы часто не содержат всех ссылок. информация для начала. Обычно вы указываете название и авторов, но не обязательно название конференции или год публикации. Имеет смысл сначала найти ссылку на статью на сайте siteseer, PubMed или другом месте, и извлеките информацию оттуда.
В общем, я нашел citeyoulike чрезвычайно полезным для систематизации документов. Это также полезно для сотрудничества с другими людьми. Вы можете создавать группы, делиться статьями, создавать форумы и т. Д.
Взгляните на этот исследовательский документ - Точное извлечение информации из исследовательских работ с использованием условных случайных полей
Вы можете использовать пакет с открытым исходным кодом, такой как Stanford NER , чтобы начать CRF.
Или, возможно, вы могли бы попробовать импортировать их (исследовательские работы) в Mendeley . Видимо, он должен извлечь для вас нужную информацию.
Надеюсь, это поможет.