TIFF IFilter 无法正确读取 VARBINARY 列中的文本

发布于 2024-09-15 23:00:04 字数 3198 浏览 5 评论 0原文

链接文本我想使用 Windows 2008 Server R2 内置的 TIFF IFilter 全文在 SQL Server 2008 中搜索...还有 R2。

我已通过服务器管理器安装了过滤器,并更新了计算机配置 -> 中的“强制 TIFF IFilter 对 TIFF 文档中的每个页面执行 OCR”本地组策略设置。管理模板 -> OCR 为“启用”。

我还创建了一个全文目录和一个名为“FileData”的表,如下所示:

CREATE TABLE [FileServer].[FileData](
 [FileDataId] [int] IDENTITY(1,1) NOT NULL,
 [FileGUID] [uniqueidentifier] ROWGUIDCOL  NOT NULL,
 [Data] [varbinary](max) FILESTREAM  NOT NULL,
 [Extension] [nvarchar](100) NULL,
 [Filename] [nvarchar](256) NULL,
 [Path] [nvarchar](256) NULL,
 CONSTRAINT [PK_FileData_FileDataId] PRIMARY KEY CLUSTERED 
(
 [FileDataId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY] FILESTREAM_ON [FILES],
 CONSTRAINT [UX_File_FileGUID] UNIQUE NONCLUSTERED 
(
 [FileGUID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] FILESTREAM_ON [FILES]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [FileServer].[FileData] ADD  CONSTRAINT [DF_FileData_FileGUID]  DEFAULT (newid()) FOR [FileGUID]
GO

ALTER TABLE [FileServer].[FileData] ADD  CONSTRAINT [DF_FileData_FileData]  DEFAULT (0x) FOR [Data]
GO

当我将文件(例如 PDF 或 Word DOC)插入到该表中时,我可以稍后通过全文搜索来命中文件中的关键字:

我制作了一个巨大的 TIFF 文件,其中包含非常清晰的文本(1024 x 768...大约 12 个单词)并将其导入到 FileData 表中。我能找到里面的每一个字。

SELECT [Path], [Filename], [Data]
FROM [FileServer].[FileData]
WHERE FREETEXT(*, 'Jason') and FREETEXT(Extension, 'tif');

但是,当我使用“真实”TIFF 文件(例如制造商的数据表)时,搜索关键字时得到的结果为零。我不知道为什么,并且没有太多关于 SQL Server 的在线故障排除。

我尝试过使用各种压缩、不压缩等方式保存 .TIFF 文件,但我只是没有运气。我的测试文件中的文本非常清晰,而且仍然很大。我无法想象文件清晰度是问题所在,尽管我认为这是可能的。

为了便于您进行比较,我拍摄了以下两张图像并将其导入:

工作示例文件 损坏的示例文件

工作示例的结果非常好。这些是全文索引中工作示例中的关键字: 3.50 美元 © 0004 08 1989年 2010年 21 21:35:42 235 第282章 3116 3702 40 48109 89 比比皆是 吸收 抽象的 陪伴 获得的 行为 行动 优点 机构 算法 算法 已经 金额 阿姆斯特丹 分析 安 出现了 应用 乔木 工作人员 人工1 任务 乙肝病毒 基于 基础 布克 旅 桶 建筑 乙肝病毒 能力 小心 改变 特征 跳棋 分类器 分类器 关闭 认知的 比较 竞争 复杂的 复杂性 复杂 电脑 面对 迷惑 考虑 连续的 不断地 不断地 做作的 信用 治愈 德 数据 德 体面的 定义的 定义 设计 设计的 设计 发现 讨论 令人不安的 期间 生态的 经济的 埃克西斯 努力 爱思唯尔 文件结束 工程 环境 环境 犯错 甚至 事件 例子 展览 经验 表达的 现存 扩展 脸 面孔 可行的 文件 射击 第一的 流动 下列的 格式 游戏 产生 通用的 遗传的 给予 目标 戈德堡 好的 霍利亚德 荷兰 然而 假设 图像 沉浸 免疫 撞击 隐含地 不准确地 信息 智力 兴趣 干预 介绍 不相关的 杰赫 杰赫 杂志 磅 大的 磅 学习 学习 寿命 长的 机器 哺乳动物 哺乳动物的 哺乳动物的 大规模地 信息 米 密歇根州 新的 NN0004 NN08 nn1989 nn2010 NN21 NN235 NN282 NN3116 NN3702 nn3d5$ NN40 nn48109 NN89 嘈杂 北 没有 小说 新奇 可获得的 经常 一 操作 选项 起初 外部 自己的 纸 平行线 通过 图案 付清 允许 永久 永远地 玩 玩家 戏剧 可能的 漂亮的 问题 提供 出版商 出版商 迅速地 随机地 很少 真实的 实际的 加强 反复 转载 要求 视网膜 评论 修订 机器人 规则 规则 科学 序列 套 显著地 简单的 简单地 小的 疏 系统 系统 标记的 技巧 理论 雷神 蒂夫 时间 tt2135 两次 曲折 二 通常 美国 大学 之上 我们 美国 视觉的 卷 没有 想知道 world

但是破碎样本的结果只是……嗯,空缺。实际 TIFF 图像中没有一个字: 08 2010年 21 21:49:22 文件结束 文件 格式 图像 NN08 nn2010 NN21 标记的 蒂夫 tt2149

如果有人对接下来要尝试什么有任何想法,我洗耳恭听。

link textI want to use the TIFF IFilter built in to Windows 2008 Server R2 with Full-Text search in SQL Server 2008... also R2.

I have installed the filter through server manager and updated the "Force TIFF IFilter to perform OCR for every page in a TIFF document" Local Group Policy setting in Computer Configuration -> Administrative Templates -> OCR to "Enabled."

I have also created a full-text catalog and a table called "FileData" that looks like this:

CREATE TABLE [FileServer].[FileData](
 [FileDataId] [int] IDENTITY(1,1) NOT NULL,
 [FileGUID] [uniqueidentifier] ROWGUIDCOL  NOT NULL,
 [Data] [varbinary](max) FILESTREAM  NOT NULL,
 [Extension] [nvarchar](100) NULL,
 [Filename] [nvarchar](256) NULL,
 [Path] [nvarchar](256) NULL,
 CONSTRAINT [PK_FileData_FileDataId] PRIMARY KEY CLUSTERED 
(
 [FileDataId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY] FILESTREAM_ON [FILES],
 CONSTRAINT [UX_File_FileGUID] UNIQUE NONCLUSTERED 
(
 [FileGUID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] FILESTREAM_ON [FILES]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [FileServer].[FileData] ADD  CONSTRAINT [DF_FileData_FileGUID]  DEFAULT (newid()) FOR [FileGUID]
GO

ALTER TABLE [FileServer].[FileData] ADD  CONSTRAINT [DF_FileData_FileData]  DEFAULT (0x) FOR [Data]
GO

When I insert a file into that table, like a PDF or word DOC, I can hit keywords in the file moments later with a fulltext search:

I made a big huge TIFF file with very clear text (1024 x 768... about 12 words) and imported THAT into the FileData table. I can find every word in it.

SELECT [Path], [Filename], [Data]
FROM [FileServer].[FileData]
WHERE FREETEXT(*, 'Jason') and FREETEXT(Extension, 'tif');

However, when I use a "real" TIFF file, like a datasheet from a manufacturer, I get ZERO results when searching for keywords. I do not have a clue as to why, and there is not much online troubleshooting this with SQL Server.

I have tried saving the .TIFF file with various kinds of compression, without compression, etc... and I am just not having any luck. The text in my test file is CRYSTAL clear and still pretty large. I cannot imagine the the file clarity is the problem, allthough I suppose that is possible.

Just so you would have something to compare, I took the following two images and imported them:

WORKING SAMPLE FILE
BROKEN SAMPLE FILE

The results for the working sample are REALLY good. These are the keywords from the working sample in the full-text index:
$3.50
©
0004
08
1989
2010
21
21:35:42
235
282
3116
3702
40
48109
89
abounds
absorb
abstract
accompanied
acquired
act
action
advantages
agency
algorithm
algorithms
already
amounts
amsterdam
analyze
ann
appeared
applications
arbor
arnficioj
artficia1
assignment
b.v.
based
basis
booker
brigade
bucket
building
bv
capabilities
carefully
changing
characteristics
checkers
classifier
classtfier
closing
cognitive
comparing
competing
complex
complexities
complexity
computer
confronting
confuse
consider
continual
continually
continuously
contrived
credit
cures
d.e.
data
de
decent
defined
definition
design
designed
devising
discovery
discussion
disturbing
during
ecological
economic
eecs
effort
elsevier
END OF FILE
engineering
environment
environments
err
even
events
example
exhibit
experience
expressed
extant
extensions
face
faces
feasible
file
firing
first
flow
following
format
game
generates
generic
genetic
giving
goals
goldberg
good
holiadd
holland
however
hypotheses
image
immersed
immune
impinging
implicitly
inexactly
information
intelligence
interest
intervene
introduction
irrelevant
j.h.
jh
journal
l.b.
large
lb
learn
learning
lifespan
long
machine
mammal
mammalian
mammal's
massively
message
mi
michigan
new
nn0004
nn08
nn1989
nn2010
nn21
nn235
nn282
nn3116
nn3702
nn3d5$
nn40
nn48109
nn89
noisy
north
nos
novel
novelty
obtainable
often
one
operate
option
originally
outside
own
paper
parallel
passing
pattern
payoff
permission
perpetual
perpetually
play
player
plays
possible
pretty
problems
provide
publisher
publishers
quickly
randomly
rarely
real
realistic
reinforcement
repeatedly
reprinted
requirements
retina
reviews
revise
robotic
rule
rules
science
sequences
sets
significantly
simple
simply
small
sparse
system
systems
tagged
techniques
theory
thor
tiff
time
tt2135
twice
twists
two
typically
u.s.a.
university
upon
us
usa
visual
vol
without
wonder
world

But the results from the Broken Sample are just... well, vacant. Not a single word from the actual TIFF image:
08
2010
21
21:49:22
END OF FILE
file
format
image
nn08
nn2010
nn21
tagged
tiff
tt2149

If anybody has any ideas on what to try next, I'm ALL ears.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

假扮的天使 2024-09-22 23:00:04

尝试将非工作图像转换为黑白图像,并查看是否可以识别更多单词。

已添加

尝试使用 IrfanView(或任何图像工具)将第二张图像的 DPI 设置为 300。然后重试。

显然,这些故障排除步骤并不是永久性的解决方案,它们只是帮助隔离问题。

Try convert the non-working image to black and white, and see if more words get recognized.

Added

Try use IrfanView (or any image tool) to set the DPI of the second image to 300. Then try again.

Obviously, these troubleshooting steps aren't permanent solutions, they just help isolate the problem.

迷爱 2024-09-22 23:00:04

rwong是正确的。您需要隔离问题。

并非所有 OCR 引擎都可以处理彩色 TIFF 图像,并且更喜欢黑白图像。我猜测 OCR 引擎甚至没有处理您的非工作页面,只是发出一条您看不到的错误消息。

  1. 如上所述,尝试将文件另存为黑白 TIFF 图像。
  2. 将文件另存为 JPEG 并尝试将图像识别为 JPEG。

我通过 OCR 运行了您的非工作图像,并且能够正确提取大部分文本,因此分辨率不是主要问题。

rwong is correct. You need to isolate the problem.

Not all OCR engines can process Color TIFF images and prefer B/W. I am guessing that the OCR Engine is not even processing your non working page and just issues an error message you cannot see.

  1. As per above try saving the file as a B/W TIFF image.
  2. Save the file as a JPEG and try recognising the image as a JPEG.

I ran your non working image through my OCR and was able to extract most of the text correctly so resolution is not a major issue.

夏了南城 2024-09-22 23:00:04

好吧,事实证明,实际问题是图像的大小。 ITFF IFilter 中的 OCR 甚至没有尝试处理它......太大了。我必须通过反复试验才能发现这一点,并且找不到任何说明传入 TIFF 的最大尺寸/DPI 的文档。有人知道这些规格吗?这篇文章似乎有一些信息:support.microsoft.com/kb/837847 但特定于 Sharepoint,我还没有时间搞乱设置来看看它是否有效。另外,我真的需要去掉尺寸上限。有想法吗?

Well, it turns out the actual problem was the SIZE of the image. The OCR in the ITFF IFilter just wasn't even attempting to process it... too big. I had to discover this by trial and error, and could not find any documentation stating the maximum size/DPI of the incoming TIFF. Anybody know these specs? This article appears to have some information: support.microsoft.com/kb/837847 But is specific to Sharepoint, and I have not had time to mess with the settings to see if it works. Also, I'd really need to just remove the size cap. Ideas there?

倾城°AllureLove 2024-09-22 23:00:04

我发现一些有趣的事情

我使用 C# 做

                    Image tiffFile = Image.FromFile(TiffPath);

                    resultFilePath = Path.Combine(tempFolder, Path.GetFileName(TiffPath));

                    tiffFile.Save(resultFilePath);

并使用将新的 tiff 文件放入数据库中,它可以工作,我不知道为什么,但解决了我的问题

I find something interesting

I use C# do

                    Image tiffFile = Image.FromFile(TiffPath);

                    resultFilePath = Path.Combine(tempFolder, Path.GetFileName(TiffPath));

                    tiffFile.Save(resultFilePath);

And use the put the new tiff file in database, it is work, I do not know why, but solve my problem

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文