Прочитайте документы Microsoft Word в простой текст (DOC, DOCX) в Java

Я ищу что-то в Java для чтения в документах Word для обработки их текста.. все, в чем я нуждаюсь, является там текстом, ничто не полагает. Я знаю о ПОИ Apache, однако оно не включает поддержку DOCX прямо сейчас, ничто там?

5
задан Kara 17 April 2014 в 19:05
поделиться

2 ответа

Установка цвета, эстетического для каждой геометрии, на постоянную может помочь. Вот небольшой пример:

require(ggplot2)
set.seed(666)
N<-20
foo<-data.frame(x=1:N,y=runif(N),z=runif(N))
p<-ggplot(foo)
p<-p+geom_line(aes(x,y,colour="Theory"))
p<-p+geom_point(aes(x,z,colour="Practice"))

#Optional, if you want your own colours
p<-p+scale_colour_manual("Source",c('blue','red'))

print(p)

alt text

-121--4716276-

Существует быстрое и грязное решение, которое просто перемещает окно по целевому изображению и вычисляет некоторую меру подобия в каждом местоположении, затем выбирает местоположение с наивысшим сходством. Затем вы сравниваете сходство с порогом, если оценка выше порога, вы делаете вывод, что изображение там и это место; если оценка ниже порогового значения, то изображения нет.

В качестве меры подобия можно использовать нормализованную корреляцию или сумму квадратичных разностей (она же L2 норма). Как говорили люди, это не будет касаться изменений масштаба. Таким образом, вы также многократно масштабируете исходное изображение и повторяете вышеописанный процесс с каждой масштабированной версией. В зависимости от размера входного изображения и диапазона возможных масштабов, это может быть достаточно хорошо, и это легко реализовать.

Правильным решением является использование аффинных инвариантов. Попробуйте посмотреть на «соответствие стереофонической линии», люди посмотрели на эту проблему в этом контексте. Используемые методы обычно примерно такие:

Предварительная обработка исходного изображения

  • Запуск «детектора точки интереса». Это найдет несколько точек на изображении, которые легко локализуются, например, углы. Детекторов много, детектор под названием «харрис-аффин» хорошо работает и довольно популярен (так что реализации, вероятно, существуют). Другой вариант - использовать детектор DoG, разработанный для SIFT и хорошо работающий.
  • В каждой точке начисления процентов извлеките небольшое субизображение (например, 30x30 пикселей)
  • Для каждого субизображения вычислите «дескриптор», некоторое представление содержимого изображения в этом окне. Опять же, существует много дескрипторов. Рассмотрим, насколько хорошо дескриптор описывает содержимое изображения (нужно, чтобы два дескриптора совпадали, только если они похожи) и насколько он инвариантен (нужно, чтобы он был одинаковым даже после масштабирования). В вашем случае, я бы порекомендовал использовать SIFT. Это не так инвариантно, как некоторые другие дескрипторы, но может справиться с масштабом хорошо, и в вашем случае масштаб является единственным, что меняется.

В конце этого этапа у вас будет набор дескрипторов.

Тестирование (с новым образом теста).

  • Сначала необходимо запустить тот же детектор процентных пунктов, что и на шаге 1, и получить набор процентных пунктов. Вычисляется один и тот же дескриптор для каждой точки, как описано выше. Теперь у вас также есть набор дескрипторов для целевого изображения.
  • Далее вы ищете совпадения. В идеале, для каждого дескриптора из исходного изображения в целевом изображении будет какой-то довольно похожий дескриптор. (Поскольку целевое изображение больше, будут также «оставшиеся» дескрипторы, т.е. точки, которые не соответствуют ни одному из исходных изображений.) Так что если достаточное количество исходных дескрипторов совпадает с достаточным сходством, тогда вы знаете, что цель там. Кроме того, поскольку дескрипторы зависят от местоположения,также будет известно, где в целевом изображении находится исходное изображение.
-121--3504569-

При некотором гуглинге я обнаружил OpenXML4J . Это может решить вашу проблему. Я не использовал это, прежде чем я уверен, что кто-то в сообществе получит лучшее понимание.

Примечание: Это дублирующий вопрос. Это имеет решение плюс немного обсуждения. Ссылка на вопрос.

3
ответ дан 13 December 2019 в 19:26
поделиться

Если вам не нужна информация о форматировании, изображения и другие интересные вещи, тогда работа будет намного проще . Достаточно от 5 до 10 строк кода.

  1. Считайте DOCX архивом. Он состоит из группы файлов, в которую входит «document.xml». Используйте ZipInputStream и извлеките только этот файл. (вы можете использовать свою любимую zip-утилиту и открыть docx и убедиться в этом сами!)
  2. Используйте SAX-анализатор и прочтите содержимое между телом узла / p / r / t - вуаля, вы получили текст!

Это применимо, только если вам нужен только текст .

5
ответ дан 13 December 2019 в 19:26
поделиться
Другие вопросы по тегам:

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