Могу ли я читать PDF или Word документы с Node.js? - PullRequest
14 голосов
/ 27 января 2012

Я не могу найти пакеты для этого.Я знаю, что в PHP есть множество библиотек для PDF (например, http://www.fpdf.org/), но что-нибудь для Node?

Ответы [ 8 ]

14 голосов
/ 03 февраля 2014

textract - отличная библиотека, которая поддерживает PDF, Doc, Docx и т. Д.

8 голосов
/ 11 апреля 2013

Вы можете легко преобразовать одно в другое или использовать, например, шаблон .doc для создания файла .pdf, но вы, вероятно, захотите использовать существующий веб-сервис для этой задачи.

Это можно сделать с помощью служб Livedocx , например

Чтобы использовать эту службу из узла, см. node-aliveocx (Отказ от ответственности: Iя являюсь автором этого модуля узла)

7 голосов
/ 28 января 2012

Похоже, есть несколько для pdf, но я не нашел ни одного для Word.

Такая обработка с привязкой к ЦП в любом случае не является сильной стороной Node (т. Е. Вы не получаете никаких дополнительных преимуществ, используя узел, чтобы сделать это по сравнению с любым другим языком).Прагматичный подход заключается в том, чтобы найти хороший инструмент и использовать его в Node.

Я слышал хорошие вещи в офисе о docsplit http://documentcloud.github.com/docsplit/

Хотя это не Node, вы можете легко вызватьэто с узла с http://nodejs.org/docs/latest/api/all.html#child_process.exec

4 голосов
/ 30 декабря 2014

Я бы посоветовал посмотреть unoconv для вашего начального преобразования, здесь используются LibreOffice или OpenOffice для фактического преобразования. Что добавляет некоторые накладные расходы.

Я бы настроил несколько рабочих со всеми необходимыми настройками и использовал бы очередь запросов / ответов для обработки преобразования ... (может захотеть посмотреть kue или zmq )

В общем, это сложная и трудоемкая задача, которая должна быть выгружена ... Pandoc и другие особо упоминают .docx, а не .doc, поэтому они могут быть или не быть вариантами.


Примечание: я знаю, что этот вопрос старый, просто хотел дать текущий ответ другим, кто сталкивался с этим.

3 голосов
/ 04 июля 2017

вы можете использовать PDF-текст для PDF-файлов. он извлечет текст из pdf в массив текстовых «кусков». Полезно для нечеткого анализа структурированного pdf-текста.

var pdfText = require('pdf-text')
var pathToPdf = __dirname + "/info.pdf"


pdfText(pathToPdf, function(err, chunks) {
  //chunks is an array of strings  
  //loosely corresponding to text objects within the pdf 
  //for a more concrete example, view the test file in this repo 
})

var fs = require('fs')
var buffer = fs.readFileSync(pathToPdf)
pdfText(buffer, function(err, chunks) {
 console.log(chunks)
})

для файлов docx вы можете использовать мамонт, он будет извлекать текст из файлов .docx.

var mammoth = require("mammoth");

mammoth.extractRawText({path: "./doc.docx"})
    .then(function(result){
        var text = result.value; // The raw text 
        console.log(text);
        var messages = result.messages;
    })
    .done();

Надеюсь, это поможет.

2 голосов
/ 09 декабря 2016

Еще один хороший вариант, если вам нужно только конвертировать из документов Word: Mammoth.js .

Mammoth предназначен для преобразования документов .docx, например, созданных MicrosoftWord и конвертировать их в HTML.Мамонт стремится производить простой и чистый HTML, используя семантическую информацию в документе и игнорируя другие детали.Например, Mammoth преобразует любой абзац со стилем Заголовок 1 в элементы h1, а не пытается точно скопировать стиль (шрифт, размер текста, цвет и т. Д.) Заголовка.

Существует большое несоответствиеструктура, используемая .docx, и структура HTML, означающая, что преобразование вряд ли будет идеальным для более сложных документов.Мамонт лучше всего работает, если вы используете стили для семантической разметки документа.

2 голосов
/ 09 марта 2016

Для синтаксического анализа pdf-файлов вы можете использовать pdf2json узловой модуль

Позволяет конвертировать pdf-файл в json, а также в необработанные текстовые данные.

0 голосов
/ 15 января 2018

Вот пример, показывающий, как загрузить и извлечь текст из PDF с помощью PDF.js :

import _ from 'lodash';
import superagent from 'superagent';
import pdf from 'pdfjs-dist';

const url = 'http://unec.edu.az/application/uploads/2014/12/pdf-sample.pdf';

const main = async () => {
  const response = await superagent.get(url).buffer();
  const data = response.body;
  const doc = await pdf.getDocument({ data });
  for (const i of _.range(doc.numPages)) {
    const page = await doc.getPage(i + 1);
    const content = await page.getTextContent();
    for (const { str } of content.items) {
      console.log(str);
    }
  }
};

main().catch(error => console.error(error));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...