2010-07-22 3 views
3

J'essaye de créer une application qui sera fondamentalement un catalogue de ma collection de pdf. Nous parlons de 15-20 Go contenant des dizaines de milliers de PDF. Je prévois également d'inclure un mécanisme de recherche en texte intégral. J'utiliserai Lucene.NET pour la recherche (en fait, NHibernate.Search), et une bibliothèque pour PDF-> conversion de texte. Quel serait le meilleur choix? Je considérais ces:La plus rapide PDF-> bibliothèque de texte pour le projet .NET

  • PDFBox
  • pdftotext (de xpdf) via C# wrapper
  • iTextSharp

Edit: Autre bonne option semble utiliser iFilters. À quel point (vitesse/qualité) vont-ils fonctionner (Foxit/Adobe) en comparaison de ces bibliothèques?

Les bibliothèques commerciales sont probablement hors de question, car c'est mon projet privé et je n'ai pas vraiment de budget pour les solutions commerciales - bien que PDFTextStream soit vraiment sympa.

D'après ce que j'ai read pdftotext est beaucoup plus vite que PDFBox. A quel point iTextSharp est-il performant par rapport à pdftotext? Ou peut-être que quelqu'un peut recommander d'autres bonnes solutions?

Répondre

3

Si c'est pour un projet privé, est-ce que cela va à un processus de conversion en cours? Par exemple. après avoir converti le 15-20Gb allez-vous encore convertir?

La raison pour laquelle je demande est parce que j'essaie de déterminer si la vitesse est votre problème principal. Si c'était moi, par exemple, en convertissant une bibliothèque de livres, ma principale préoccupation serait la qualité de la conversion, pas la vitesse. Je pourrais toujours laisser la conversion pendant la nuit/-weekend si nécessaire!

+0

OK, vous avez raison. La qualité vient en premier. Mais j'ai encore besoin de la performance parce que je vais probablement ajouter des lots (dans des centaines) de documents plus tard. Aussi la facilité d'utilisation serait agréable - écrire un wrapper pour une console prog est définitivement pire que d'avoir juste une bibliothèque C# (comme iTextSharp, par exemple). – n0e

0

Je suppose que l'utilisation de n'importe quelle bibliothèque est bien, mais voulez-vous rechercher tous ces fichiers 20Gb au moment de la recherche? Pour la recherche en texte intégral, vous pouvez créer une base de données, comme sqlite ou n'importe quelle base de données locale sur un ordinateur client, lire tout le pdf et les convertir en texte brut et les stocker dans la base de données lorsqu'ils sont ajoutés en premier.

Votre base de données peut être simpley comme suit ..

Table: PDFFiles 
PDFFileID 
PDFFilePath 
PDFTitle 
PDFAuthor 
PDFKeywords 
PDFFullText.... 

et vous pouvez rechercher cette table lorsque vous avez besoin, de cette façon votre recherche sera indépendante extrêmement rapide du type de pdf, plus cette conversion de pdf à la base de données est nécessaire uniquement lorsque pdf est ajouté à votre collection ou modifié.

+0

Oui, je prévois d'effectuer une recherche dans toute la collection en texte intégral à la fois. Mais ce que vous dites est déjà pris en charge, je vais utiliser NHibernate.Search, qui va créer des tables en DB pour moi et faire de la recherche en texte intégral. Ce dont j'ai besoin, en ce moment, ce sont les façons de convertir des documents dans différents formats, principalement des fichiers PDF, mais aussi des DJVU, en texte clair, donc je peux les transmettre à NHibernate.Search. – n0e

1

La version de bureau du PDF Foxit IFilter est libre

http://www.foxitsoftware.com/pdf/ifilter/

Il automatiquement faire l'indexation et la recherche, mais peut-être leur index est disponible pour vous d'utiliser aussi bien. Si vous envisagez de l'utiliser dans une application que vous vendez ou distribuez, alors je suppose que ce ne sera pas un bon choix, mais si c'est pour vous-même, alors cela pourrait fonctionner.

Le code Foxit est au cœur de PDF Reader/Text Extraction library de ma société, ce qui ne serait pas approprié pour votre projet, mais je peux garantir la vitesse et la qualité des résultats du moteur Foxit sous-jacent.

+1

3000 $ pour le SDK ne semble pas gratuit ou pas cher pour moi ... –

+0

Je suis assez sûr que le Foxit IFilter est gratuit pour une utilisation de bureau. Mon argument est qu'il est utilisé dans les logiciels commerciaux que j'ai construits et que c'est rapide et bon. –

Questions connexes