Вопрос по c#, pdf, .net, html, extract – Как извлечь текст из документов PDF, Word и Excel? [закрыто]

13

Мне нужна библиотека .NET, с помощью которой я могу извлекать текстовые данные из файлов PDF, Excel и Word.

В идеале бесплатный инструмент!

Вы бы порекомендовали кого-нибудь?

большое спасибо,

Это не совсем дубликат. Он просит об одном инструменте, выполняющем PDF, Excel и извлечение слов. The Light
возможный дубликатPDF Reader cdhowie
Отличный PDF / Word / Excel Reader; быть положительным ;). да, на практике мне, возможно, придется использовать отдельные библиотеки, но можно было бы создать одну библиотеку, превосходно обрабатывающую все 3, например, TextExtractionGod! Я просто дал вам хорошую идею бизнеса / продукта;) The Light
Перефразируя философию Unix, «напишите [библиотеки], которые делают одно и делают это хорошо». Вы бы предпочли использовать одну отличную библиотеку для чтения PDF и одну отличную библиотеку для чтения Word или половинную библиотеку, которая делает и то, и другое? (См. Также: «если вы попытаетесь сделать все, вы ничего не добьетесь».) cdhowie
Я выполнил поиск и нашел некоторые, но не очень хорошие ... Не лучше ли иметь один инструмент, способный извлекать файлы трех типов? The Light

Ваш Ответ

6   ответов
7

toxy.codeplex.com, Toxy - это чистый фреймворк для извлечения текста .NET.

Использовать Toxy очень просто. Например, чтобы извлечь файл электронной таблицы Excel с именем test.xlsx.

ParserContext context = new ParserContext("test.xlsx");
ISpreadsheetParser parser = ParserFactory.CreateSpreadsheet(context);
ToxySpreadsheet ss = parser.Parse();
//then you can start handle the result - a ToxySpreadsheet object
Я опробовал Токси, он работает хорошо. Однако для чтения PDF он использует itextsharp.dll версии 5.5.0, которая НЕ является бесплатной.
0

вы можете использовать iFilter. Это не единственный продукт, но это бесплатно. iFilter используется для извлечения текста для поддержки Microsoft Index Service. Ищите на iFilter .NET C # примеры того, как его использовать. Если вам нужен форматированный текст, значит, не правильный инструмент. Он извлекает необработанный текст только с большим количеством разрывов строк.

2

Как извлечь текст из документов MS Office в C #

и для PDF я бы использовал PDFsharp, он с открытым исходным кодом и имеет несколько хороших примеров и тому подобное на своем сайте:

http://pdfsharp.com/PDFsharp/

PDFSharp, кажется, не так хорош в извлечении текста:stackoverflow.com/questions/9144640/… The Light
Это работает просто отлично, просто нужно сделать какой-то текстовый анализ ... через ссылку ответа в посте, на который вы ссылались на форуме для pdfsharp, который имеет большую поддержку, на которую я ссылался.
1

itextsharp является удивительным. это бесплатно и с открытым исходным кодом.

читать текст из PDF очень легко с помощью этой библиотеки.

@TheLight - версия 4.1.6 и более ранние версии iTextSharp лицензируются в соответствии с LGPL и могут свободно использоваться в коммерческих приложениях.
Itextsharp не является полностью бесплатным для использования в коммерческих приложениях:itextpdf.com/terms-of-use/index.php или жеitextpdf.com/summit.php#talk9 The Light
1

Я бы порекомендовал Aspose Total для этого. Несколько лет назад я выполнил проект по выполнению в точности того, о чем вы говорите, и сравнил его с использованием возможностей взаимодействия Office между различными версиями Office (до перехода на XML). Aspose была самой надежной библиотекой. Вам, вероятно, придется сделать какое-то распознавание текста на основе того, о чем вы говорите.It's not cheap но я нашел их API довольно солидными, и он работает на большинстве версий типов файлов, о которых вы спрашиваете. Вы должны быть в состоянии использовать бесплатную пробную версию, чтобы увидеть, подходит ли она для вашего проекта. Я не имею никакого отношения к Aspose, кроме того, что я использовал их инструменты в производственной среде.

Всего Aspose

29

Как человек, который потратил много дней на поиски бесплатных решений (почти) этой конкретной проблемы, я могу честно сказать вам, что вы не найдете бесплатную библиотеку, которая сможет извлекать текст изall из этих форматов хорошо. Единственная известная мне библиотека, которая отлично работает со всеми этими форматами (и более), - это коммерческая библиотека, и она на самом деле не является родной для .NET, это библиотека C ++ / COM с C ++. / Оболочка CLI .NET.

Какие есть варианты?

iTextSharp -- This one is absolutely fantastic in extracting text from PDFs. While later versions of this library were commercial friendly (LGPL), the authors have decided instead that they want to charge for the software, so they've instead released it under the AGPL, so unless you want to release all of your source code, you probably don't want to use one of those versions. However, the last version (4.1.6) licensed under the LGPL can be found all over the internet. This SO question has a link to a version that is under the LGPL.

PdfBox -- Another PDF library. This one, IMO, is better because it's under the Apache 2.0 license. There are a few issues with it, as it sometimes (perhaps rarely) will not do as good of a job as iTextSharp. I attribute this more to the fact that it's a newer library than anything else. However, my experience with this library is from months ago. This project is actively developed, and just in the last month, 52 issues have been resolved. I would keep my eye on this one. Please note this is a java library. (Keep reading below for more information on why I've included this.)

POI or NPOI -- These are libraries specifically written for Microsoft office documents, particularly the pre-2007 formats, OLE binary file formats. It does support the newer OpenXML formats, though I'm not sure how mature that part of the library is. POI is the java version (Keep reading below for more information on why I've included this.), where NPOI is a native .NET version. However, NPOI only supports excel documents, where POI can do text extraction on many more types.

Open XML SDK 2.0 -- A library for reading/modifying office 2007+ (unencrypted OpenXML) documents created my Microsoft themselves! This is an amazing library for working with these kinds of documents. However, it is a lower-level library and therefore doesn't actually (as far as I know of), have a it does everything text extraction class. There's a fairly good example, (I'm not sure it covers certain cases like text in tables, etc), of text extraction from a word document at this SO answer

Tika -- Once again, another Java library (I'm not telling you about java libraries for no reason. Keep on reading! :)), and this will be as close to "one library" for text extraction as you can get. Tika can extract metadata and structured text content from many different kinds of files, using existing parsing libraries. It actually uses POI and PdfBox under the hood for office and PDF documents.

Некоммерческий

dtSearch -- This is a library I'm very familiar with. It does a fantastic job, and can parse a ridiculous amount of file formats. However, it costs money and is probably overkill for what you need. It's actually exactly what we need, but we're trying to get rid of it ourselves, because we only use it for parsing (it's actually a full-text search engine), and there's plenty of parsing libraries out there that we can use or modify to suit our needs, but it honestly blows all these other libraries out of the water. As I mentioned before, it is also not native .NET code. A C++/CLI wrapper is used to intertop between the DLL and the .NET runtime.

iFilters can be used, and are mentioned in several other SO answers on different questions, but the text you will get back is unstructured. Sometimes it's just bad...unreadable for humans, at least. I believe that iFilters are also deprecated, and depending on license issues, you might not be able to redistribute them.

Почему я упомянул все эти библиотеки Java? Ну, по двум причинам. Во-первых, нетfree Эквиваленты .NET, которые приближаются к качеству этих библиотек Java. Во-вторых, вы можете использовать эти библиотеки в .NET (я лично сделал это самостоятельно с этими библиотеками, так что я могу по крайней мере поручиться за это), используяIKVM, Это реализация Java внутри .NET.Вот хороший пример об использовании IKVM для преобразования Tika в сборку .NET, которую можно использовать в вашем проекте. Возможно, самая страшная вещь об IKVM, это то, чтоit just works!

РЕДАКТИРОВАТЬ: я забыл, что автор этого блога на самом деле опубликовал код и преобразовал библиотеки напроект GitHub, Так что, если вы хотите быстро проверить это, вы можете сделать это там. Тем не менее, это гораздо более старая версия Тики и старше года. Если результаты окажутся не такими, как вы ожидали, я бы посоветовал попробовать сами с последней версией.

Тика на точечной сети доступна через NuGet:nuget.org/packages/TikaOnDotNet  Отлично работает в моих начальных тестах, супер прост в использовании и поддерживает широкий спектр форматов файлов. Довольно внушительный.
Эй, хороший! есть идеи о том, как работает Snowtide и последняя версия Ghostscript? да, есть много сообщений SO, но у вас, кажется, был большой уровень исследований ..
Ознакомьтесь с новой библиотекой Apitron PDF Kit, способной извлекать любой форматированный текст.
Стоит упомянуть, что Open XML работает только для версии x (например, xdoc). Даже Office 2010, сохраненный как нативный .doc, не будет работать. Насколько мне известно.
@ Blam, это правильно. Я упомянул это как возможность читать / изменять документы Office 2007+, то есть только открытые форматы xml.

Похожие вопросы