2017-01-05 7 views
1

ファイル内のコンテンツを検索する必要があります。mongodbのアップロード画像のコンテンツ検索

イメージ(png、bmp、jpg)またはGridFSを使用しているドキュメントを保存するために最新のリリースMongodbを使用しています。これはバイナリでデータを格納しています。 MongoDBは2つの方法でバイナリを保存し、もう1つはjsonを保存します。

したがって、Mongodbは画像内のコンテンツを直接検索する方法を提供しません。 other私は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

ただ、OCR結果格納する新しいクラスを作成します。

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

とMongoのためにそれを保存するよりも:あなたの結果を検索することができ、その後

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

を:

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

but: あなたはそれをどうしますか? ocr結果と他のデータとの接続には、OcrCollectionのプロパティがさらに必要になります。

+0

ああ、今はうまくいきました。ありがとうございます –

+0

今コレクションで発見された検索クエリのコンテンツがすべてカウントされます。私は取得していないが、このクエリを使用しています。 var filter =ビルダー .Filter.Where(o => o.OcrResult == content); –

関連する問題