Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# mongodb中上传图像的内容搜索_C#_Mongodb_Mongodb Query_Mongodb .net Driver_Gridfs - Fatal编程技术网

C# mongodb中上传图像的内容搜索

C# mongodb中上传图像的内容搜索,c#,mongodb,mongodb-query,mongodb-.net-driver,gridfs,C#,Mongodb,Mongodb Query,Mongodb .net Driver,Gridfs,我必须搜索文件中的内容。以db格式上传的图像(bmp、tiff、png)或pdf等 我使用最新版本的Mongodb来存储图像(png、bmp、jpg)或使用GridFS的文档。这就是以二进制形式存储数据。MongoDB使用两种方式存储文档,一种是二进制的,另一种是json 所以Mongodb没有提供直接搜索图像内容的方法。 另一个是,对我来说,我可以使用OCR,但OCR以字符串形式提供最终结果,所以我必须将其转换为有效的json以存储在db中。如果这是我的最后一个选项,那么我将如何将该字符串转换

我必须搜索文件中的内容。以db格式上传的图像(bmp、tiff、png)或pdf等

我使用最新版本的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);
//result5.txt是OCR结果的文本文件。
string text=System.IO.File.ReadAllText(“E:\\result5.txt”);
var document=BsonSerializer.Deserialize(文本);
var collection=Database.GetCollection(“文章”);
收藏。插入(文本);
但是我犯了一个错误

MongoCommandException:命令插入失败:的类型错误 文档[0]。应为对象,但得到字符串

如何在数据库中上载的图像文件中进行搜索

因此,任何建议将不胜感激,请管理员不要关闭此帖子的评论谢谢

此表单中存储的文本数据。

只需创建新类以包含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});
但是:
你打算用它做什么?您将需要OcrCollection中的更多属性,才能将ocr结果与其他数据连接起来。

现在我可以统计在集合中发现的所有搜索查询内容。我正在使用此查询,但无法获取。var filter=Builders.filter.Where(o=>o.ocresult==content);
collection.Find(x=>x.OcrResult.Contains("bla"))