use of org.opencastproject.metadata.mpeg7.Textual in project opencast by opencast.
the class DictionaryServiceImpl method cleanUpText.
/**
* Filter the text according to the rules defined by the dictionary
* implementation used. This implementation uses a regular expression to find
* matching terms.
*
* @return filtered text
*/
@Override
public Textual cleanUpText(String text) {
logger.debug("Text input: “{}”", text);
LinkedList<String> words = new LinkedList<String>();
Matcher matcher = compilesPattern.matcher(text);
while (matcher.find()) {
words.add(matcher.group());
}
String result = org.apache.commons.lang3.StringUtils.join(words, " ");
logger.debug("Resulting text: “{}”", result);
if ("".equals(result)) {
return null;
}
return new TextualImpl(result);
}
use of org.opencastproject.metadata.mpeg7.Textual in project opencast by opencast.
the class TextAnalyzerServiceImpl method analyze.
/**
* Returns the video text element for the given image.
*
* @param imageFile
* the image
* @param id
* the video text id
* @return the video text found on the image
* @throws TextAnalyzerException
* if accessing the image fails
*/
protected VideoText[] analyze(File imageFile, String id) throws TextAnalyzerException {
/* Call the text extractor implementation to extract the text from the
* provided image file */
List<VideoText> videoTexts = new ArrayList<VideoText>();
TextFrame textFrame = null;
try {
textFrame = textExtractor.extract(imageFile);
} catch (IOException e) {
logger.warn("Error reading image file {}: {}", imageFile, e.getMessage());
throw new TextAnalyzerException(e);
} catch (TextExtractorException e) {
logger.warn("Error extracting text from {}: {}", imageFile, e.getMessage());
throw new TextAnalyzerException(e);
}
/* Get detected text as raw string */
int i = 1;
for (TextLine line : textFrame.getLines()) {
if (line.getText() != null) {
VideoText videoText = new VideoTextImpl(id + "-" + i++);
videoText.setBoundary(line.getBoundaries());
Textual text = dictionaryService.cleanUpText(line.getText());
if (text != null) {
videoText.setText(text);
videoTexts.add(videoText);
}
}
}
return videoTexts.toArray(new VideoText[videoTexts.size()]);
}
Aggregations