2017-01-05 5 views
1

Мне нужно искать содержимое внутри файла. (bmp, tiff, png) или pdf и т. д.Поиск содержимого загруженного изображения в mongodb

Я использую последнюю версию Mongodb для хранения изображений (png, bmp, jpg) или документов с использованием GridFS. который хранит данные в двоичном формате. MongoDB использует два способа хранения документов, один из которых двоичный, а другой - json.

так что Mongodb не предоставляет способ поиска содержимого на изображении напрямую. другой - это то, что для меня я могу использовать OCR, но OCR обеспечивает конечный результат в строке, поэтому мне нужно преобразовать его в действительный json для хранения в db. если это последний вариант для меня, то как я преобразую эту строку в действительный формат json.

Я пытаюсь сохранить текстовый файл в mongodb со следующим кодом.

// result5.txt is a text file that is result of OCR.   

string text = System.IO.File.ReadAllText("E:\\result5.txt"); 

var document = BsonSerializer.Deserialize<BsonDocument>(text); 

var collection = Database.GetCollection("articles"); 

collection.Insert(text); 

, но я получаю сообщение об ошибке.

MongoCommandException: Ошибка ввода команды: неправильный тип для документов [0]. Ожидаемый объект, получил строку.

Как я могу найти в файле изображения, который я загрузил в db. ??

поэтому любое предложение будет оценено, пожалуйста, администратор не отключит комментарий для этого сообщения.

текстовые данные хранятся в этой форме. enter image description here

ответ

1

Просто создать новый класс, чтобы содержать результаты распознавания:

public class OcrContainer 
{ 
    public BsonObjectId Id { get; set; } 
    public string OcrResult { get; set;} 
} 

и чем хранить его в Монго:

var collection = Database.GetCollection<OcrContainer >("articles"); 
collection.InsertOne(new OcrContainer {OcrResult = text}); 

после этого вы можете искать результаты:

collection.Find(x=>x.OcrResult.Contains("bla")) 

Но: Что вы собираетесь с этим делать? Вам потребуется больше свойств в OcrCollection для соединения с результатами ocr с другими вашими данными.

+0

oh, что сработало сейчас. спасибо –

+0

теперь я могу подсчитать все вхождения содержимого поискового запроса, основанного в коллекции. Я использую этот запрос, но не получаю. var filter = Builders .Filter.Where (o => o.OcrResult == content); –

 Смежные вопросы

  • Нет связанных вопросов^_^