"Оцифровка" бизнес-процессов.

   
     +7 (910) 778-05-31, romanb@nxt.ru
Коснитесь для звонка

Извлечение текста из файлов разных форматов и типов

Встроенный в Windows механизм полнотекстового поиска (служба индексирования Windows или Windows Desktop Search) позволяет извлекать текст из файлов практически любого формата, а из мультимедийных и других файлов может извлекать теги(например у трека можно вытащить его название и исполнителя). Кроме того, текст может быть извлечен также из файлов, которые упакованы в архив!
Для реализации такой возможности в 1С:Предприятие 8 существует метод «ИзвлечениеТекста».

ИзвлечениеТекста.ПолучитьТекст (TextExtraction.GetText)
ИзвлечениеТекста (TextExtraction)
ПолучитьТекст (GetText)
Возвращаемое значение: 
Тип: Строка. Текст, извлеченный из файла, или пустая строка в случае ошибки.

Функция для извлечения текста из файла:

//***********************************
Функция ПолучитьТекстФайла(ПутьКФайлу)
	
	Сообщить("Получаю текст из " + СокрЛП(ПутьКФайлу));
	
	ТекПутьКФайлу = ПутьКФайлу;
	ТекФайл = Новый Файл(ТекПутьКФайлу);
	Если ТекФайл.Существует() Тогда
		Объект = Новый ИзвлечениеТекста(ТекПутьКФайлу);
			Попытка
				ТекТекст = Объект.ПолучитьТекст();
			Исключение
				Сообщить(ОписаниеОшибки());
				ТекТекст = "";
			КонецПопытки;
				
			Возврат ТекТекст;
		Иначе
			Сообщить("Файл не существует!");
			Возврат Ложь;
		КонецЕсли;
	КонецЕсли;
КонецФункции

За работу этого метода отвечает интерфейс IFilter. Он является расширяемым. Чтобы появилась возможность извлекать текст из еще одного типа файлов, нужно установить дополнительный фильтр. По умолчанию текст извлекается из файлов следующих типов (имеющих расширение): ASCX, ASP, ASPX, CSS, HHC, HTA, HTM, HTML, HHT, HTW, HTX, ODC, STM, DOC, DOT, POT, PPS, PPT, XLB, XLC, XLS, XLT, TXT, EML. Подразумевается, что файлы с расширением TXT — это текстовые файлы в кодировке ANSI или UNICODE (UTF-16).

Без соответствующего фильтра IFilter, содержимое файла не может быть прочитано. К примеру, для работы с форматом PDF необходимо установить расширение PDF IFilter, с CHM — расширение CHMIFilter. IFilters также используются SQL Server в качестве компонента SQL Server Full Text Search.

Чтобы узнать, какие расширения для IFilter уже установлены на вашем компьютере, можно скачать и установить программу IFilter Explorer: http://www.citeknet.com/Products/IFilters/IFilterExplorer/tabid/62/Default.aspx.

8 комментариев на данный момент.

  1. Владимир:

    Доброго времени сутол!
    Вы не получается реализовать данный метод.

    Код программы:
    НайденныеФайлы = НайтиФайлы(Путь,"*");
    Для каждого Файл из НайденныеФайлы Цикл
     Попытка
       Объект = Новый ИзвлечениеТекста(Файл.ПолноеИмя);
       Текст = Объект.ПолучитьТекст();
       Сообщить(Текст);;
       Объект.Записать(Путь+Файл.ИмяБезРасширения+" new"+".txt");
     Исключение
       Сообщить (ОписаниеОшибки());    
     КонецПопытки;
    КонецЦикла;

    Выдает сообщение : Ошибка при вызове метода контекста (ПолучитьТекст): Ошибка извлечения текста из файла

    Фильтр подключал установив Acrobat reader и Adobe PDF IFilter v6.0

    Через программку IFilter вижу, что фильтры установились. http://rghost.ru/56154478/image.png

    В чем может быть проблема?

     

    • admin:

      Сложно сказать, нужно смотреть отладчиком.

      В крайнем случае попробуйте на другой системе, возможно что то с ОС. Таких проблем у меня не возникало, как впрочем и каких то других по этой теме.

      Вот законченная конфа, в которой реализованы все необходимые методы http://smbsec.ru/1cpredpriyatie/konfiguraciya-katalog-fajlov-s-poln.html, попробуйте поковырять её.

      • Владимир:

        Ошибка выпадает менно на строке " Текст = Объект.ПолучитьТекст();".

        Если взять файлы формата txt, то программа работает без ошибок. (думаю проблема именно в фильтре)

        1С 8 не упр. формы. Может необходимо что-нибудь ещё непосредственно в 1С подключать?

  2. Владимир:

    Ошибка выпадает менно на строке " Текст = Объект.ПолучитьТекст();".

    Если взять файлы формата txt, то программа работает без ошибок. (думаю проблема именно в фильтре)

    1С 8 не упр. формы. Может необходимо что-нибудь ещё непосредственно в 1С подключать?

  3. Если написать такой код

    ИмяВК = "PDF.IFilter";
    ПодключитьВнешнююКомпоненту(ИмяВК);

    ФайлPdf = Новый (ИмяВК);

    То на последней строке выдаёт ошибку:

    {Форма.Форма.Форма(12)}: Тип не определен (PDF.IFilter)

  4. admin:

    Скорее всего проблема с регистрацией фильтра в ОС. Для получения текста из pdf есть еще один вариант — через запуск консольной утилиты, которая будет вытаскивать текст в текстовый файлик, а из текстового файлика уже загружать в 1с.  По этой ссылке http://smbsec.ru/1cpredpriyatie/konfiguraciya-katalog-fajlov-s-poln.html написано подробнее + реализация этого метода внутри конфы и сама утилитка.

Добавить комментарий для admin Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *