如何从图像文件中提取文本

如何在 C# 中使用 Iron Tesseract

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronOCR 提供了一个直观的 API,用于使用定制和优化的 Tesseract 5,即 Iron Tesseract。 通过使用 IronOCR 和 IronTesseract,您可以将文本图像和扫描文档转换为文本和可搜索的 PDF。

快速入门:在 C# 中设置 IronTesseract 配置

以下是快速上手 IronTesseract 的方法。 本示例展示了如何启动引擎、调整一些设置并运行 OCR——只需一张图像、一次调用,无需样板代码。

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronOCR

    PM > Install-Package IronOcr

  2. 复制并运行这段代码。

    var result = new IronOcr.IronTesseract { Language = IronOcr.OcrLanguage.English, Configuration = new IronOcr.TesseractConfiguration { ReadBarCodes = false, RenderSearchablePdf = true, WhiteListCharacters = "ABCabc123" } }.Read(new IronOcr.OcrInput("image.png"));
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronOCR,免费试用!
    arrow pointer

创建 IronTesseract 实例

只需像这样初始化一个 Tesseract 对象:

:path=/static-assets/ocr/content-code-examples/how-to/irontesseract-initialize-irontesseract.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

您可以通过选择不同的语言、启用条形码读取以及将字符列入白名单/黑名单来自定义 IronTesseract 的行为:

:path=/static-assets/ocr/content-code-examples/how-to/irontesseract-configure-irontesseract.cs
IronTesseract ocr = new IronTesseract
{
    Configuration = new TesseractConfiguration
    {
        ReadBarCodes = false,
        RenderHocr = true,
        TesseractVariables = null,
        WhiteListCharacters = null,
        BlackListCharacters = "`ë|^",
    },
    MultiThreaded = false,
    Language = OcrLanguage.English,
    EnableTesseractConsoleMessages = true, // False as default
};
Dim ocr As New IronTesseract With {
	.Configuration = New TesseractConfiguration With {
		.ReadBarCodes = False,
		.RenderHocr = True,
		.TesseractVariables = Nothing,
		.WhiteListCharacters = Nothing,
		.BlackListCharacters = "`ë|^"
	},
	.MultiThreaded = False,
	.Language = OcrLanguage.English,
	.EnableTesseractConsoleMessages = True
}
$vbLabelText   $csharpLabel

完成上述步骤后,您可以使用 Tesseract 功能读取OcrInput对象:

:path=/static-assets/ocr/content-code-examples/how-to/irontesseract-read.cs
IronTesseract ocr = new IronTesseract();

using OcrInput input = new OcrInput();
input.LoadImage("attachment.png");
OcrResult result = ocr.Read(input);
string text = result.Text;
Dim ocr As New IronTesseract()

Using input As New OcrInput()
	input.LoadImage("attachment.png")
	Dim result As OcrResult = ocr.Read(input)
	Dim text As String = result.Text
End Using
$vbLabelText   $csharpLabel

高级 Tesseract 配置变量

IronOCR Tesseract 接口允许通过IronOCR.TesseractConfiguration 类完全控制 Tesseract 配置变量。

Tesseract 配置代码示例

:path=/static-assets/ocr/content-code-examples/how-to/irontesseract-tesseract-configuration.cs
using IronOcr;
using System;

IronTesseract Ocr = new IronTesseract();

Ocr.Language = OcrLanguage.English;
Ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Configure Tesseract Engine
Ocr.Configuration.TesseractVariables["tessedit_parallelize"] = false;

using var input = new OcrInput();
input.LoadImage("/path/file.png");

OcrResult Result = Ocr.Read(input);
Console.WriteLine(Result.Text);
Imports IronOcr
Imports System

Private Ocr As New IronTesseract()

Ocr.Language = OcrLanguage.English
Ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd

' Configure Tesseract Engine
Ocr.Configuration.TesseractVariables("tessedit_parallelize") = False

Dim input = New OcrInput()
input.LoadImage("/path/file.png")

Dim Result As OcrResult = Ocr.Read(input)
Console.WriteLine(Result.Text)
$vbLabelText   $csharpLabel

Tesseract 所有配置变量列表

这些可以通过IronTesseract.Configuration.TesseractVariables["key"] = value;进行设置。

Tesseract 配置变量 默认 意义
分类_数量_cp_级别3类剪枝器级别数
textord_debug_tabfind0调试选项卡查找
textord_debug_bugs0启用与制表符查找错误相关的输出
textord_testregion_left-1调试报告矩形的左边缘
textord_testregion_top-1调试报告矩形的顶部边缘
textord_testregion_right2147483647调试矩形的右边缘
textord_testregion_bottom2147483647调试矩形的底部边缘
textord_tabfind_show_partitions0显示分区边界,如果大于 1 则等待。
devanagari_split_debuglevel0拆分 shiro-rekha 进程的调试级别。
edges_max_children_per_outline10角色轮廓内子角色的最大数量
edges_max_children_layers5角色轮廓内嵌套子角色的最大层数
每个孙子的边缘子节点10抛掷轮廓的重要性比率
edges_children_count_limit45斑点中允许的最大孔数
edges_min_nonhole12方框内潜在字符的最小像素
边缘路径面积比率40可接受的儿童轮廓的最大镜头面积/面积
textord_fp_chop_error2最大允许的切割单元弯曲度
textord_tabfind_show_images0显示图像斑点
textord_skewsmooth_offset4对于平滑因子
textord_skewsmooth_offset21对于平滑因子
textord_test_x-2147483647测试点坐标
textord_test_y-2147483647测试点坐标
textword_min_blobs_in_row4梯度计数前的最小斑点数
textord_spline_minblobs8每个样条曲线段中的最小斑点
textord_spline_medianwin6样条分割窗口的大小
textord_max_blob_overlaps4一个大斑点可以重叠的最大斑点数量
textord_min_xheight10最小可信像素 x 高度
textord_lms_line_trials12要进行的线性拟合次数
oldbl_holed_losscount10使用备用线路之前的最大损失
pitsync_linear_version6使用新的快速算法
pitsync_fake_depth1最大程度的伪造
textord_tabfind_show_strokewidths0显示笔画宽度
textord_dotmatrix_gap3像素间距破损时的最大像素间隙
textord_debug_block0阻塞以进行调试
文本音调范围2球场上的最大射程测试
textord_words_veto_power5推翻否决所需的票数
equationdetect_save_bi_image0保存输入的双图像
equationdetect_save_spt_image0保存特殊字符图像
方程检测保存种子图像0保存种子图像
方程检测保存合并图像0保存合并后的图像
poly_debug0调试旧多边形
poly_wide_objects_better1更精确的近似值适用于宽泛的事物
wordrec_display_splits0显示分割
textord_debug_printable0使调试窗口可打印
textord_space_size_is_variable0如果属实,则假定单词分隔符空格的宽度是可变的,即使字符的间距是固定的。
textord_tabfind_show_initial_partitions0显示分区边界
textord_tabfind_show_reject_blobs0显示被判定为噪声的斑点
textord_tabfind_show_columns0显示列边界
textord_tabfind_show_blocks0显示最终区块边界
textord_tabfind_find_tables1运行表检测
devanagari_split_debugimage0是否为拆分 shiro-rekha 进程创建调试镜像。
textord_show_fixed_cuts0绘制固定间距单元格边界
边缘使用新的轮廓复杂性0使用新的大纲复杂度模块
边缘调试0启用此模块的调试功能
edges_children_fix0移除焦炭状子代的方盒子状父母
gapmap_debug0说明哪些区块有表格
gapmap_use_ends0在行的开头和结尾留出较大的空间
gapmap_no_isolated_quanta0确保间隙宽度不小于 2 量子
textord_heavy_nr0强力消除噪音
textord_show_initial_rows0显示行累积
textord_show_parallel_rows0显示页面相关行
textord_show_expanded_rows0展开后显示行
textord_show_final_rows0最终拟合后的显示行
textord_show_final_blobs0预分配后显示斑点边界
textord_test_landscape0测试指的是陆地/港口
textord_parallel_baselines1力平行基线
textord_straight_baselines0强迫直线底线
textord_old_baselines1使用旧的基线算法
textord_old_xheight0使用旧的 xheight 算法
textord_fix_xheight_bug1使用样条基线
textord_fix_makerow_bug1防止出现多个基线
textord_debug_xheights0测试 x 高度算法
textord_biased_skewcalc1线长度偏差估计
textord_interpolating_skew1跨越间隙进行插值
textord_new_initial_xheight1使用测试 x 高度机制
textord_debug_blob0打印测试斑点信息
textord_really_old_xheight0使用原始的wiseowl x高度
textord_oldbl_debug0调试旧基线生成
textord_debug_baselines0调试基线生成
textord_oldbl_paradef1使用默认机制
textord_oldbl_split_splines1分裂阶梯样条
textord_oldbl_merge_parts1合并可疑分区
oldbl_corrfix1提高身高相关性
oldbl_xhfix0修复模式阈值中 x 高度的错误
textord_ocropus_mode0为蛸蛸建立基线
textord_tabfind_only_strokewidths0仅运行笔画宽度
textord_tabfind_show_initialtabs0显示标签候选
textord_tabfind_show_finaltabs0显示标签页矢量图
textord_show_tables0显示表格区域
textord_tablefind_show_mark0详细调试表标记步骤
textord_tablefind_show_stats0显示用于表格查找的页面统计信息
textord_tablefind_recognize_tables0启用表格识别器,用于表格布局和筛选。
textord_all_prop0所有文档均为比例文本
textord_debug_pitch_test0固定音高测试调试
textord_disable_pitch_test0关闭 DP 固定螺距算法
textord_fast_pitch_test0实现更快的音调算法
textord_debug_pitch_metric0写出完整的公制单位内容
textord_show_row_cuts0绘制行级切口
textord_show_page_cuts0绘制页面级切口
textord_pitch_cheat0使用固定/私有财产的正确答案
textord_blockndoc_fixed0尝试整个文档/模块固定音高
textord_show_initial_words0显示单独的词语
textord_show_new_words0显示单独的词语
textord_show_fixed_words0显示强制固定音高词语
textord_blocksall_fixed0抱怨支撑块
textord_blocksall_prop0抱怨固定螺距块
textord_blocksall_testing0抱怨时丢弃统计数据
文本测试模式0进行当前测试
textord_pitch_scalebigwords0大词评分
textord_restore_underlines1剪掉下划线并放回原位
textord_fp_chopping1进行固定音高切分
textord_force_make_prop_words0对所有行强制进行比例分词
textord_chopper_test0直升机正在测试中。
wordrec_display_all_blobs0显示斑点
wordrec_blob_pause0斑点断裂
流文件列表0从标准输入流式传输文件列表
调试文件 要将 tprintf 输出发送到的文件
字体名称分类未知字体训练中使用的默认字体名称
文档标题 输出文档标题(用于 hOCR 和 PDF 输出)
点积自动化用于计算点积的函数
classify_cp_angle_pad_loose45修枝剪角度垫松动
classify_cp_angle_pad_medium20中号修枝剪角度垫
classify_cp_angle_pad_tight10CLass 修枝剪角度垫紧
classify_cp_end_pad_loose0.5修枝剪末端垫松动
classify_cp_end_pad_medium0.5中号修枝剪末端垫
classify_cp_end_pad_tight0.5修枝剪末端垫紧
classify_cp_side_pad_loose2.5修枝剪侧垫松动
classify_cp_side_pad_medium1.2中号修枝剪侧垫
classify_cp_side_pad_tight0.6修枝剪侧垫紧
分类_pp_角度垫45原型修枝剪角度垫
分类_pp_end_pad0.5原型修剪末端垫
分类_pp_side_pad2.5原型修枝剪侧垫
分类最小斜率0.414214斜率低于该斜率的线称为水平线
分类最大斜率2.41421斜率大于该斜率的线称为垂直线
分类规范调整中点32规范调整中点……
分类规范调整卷曲2调整卷曲度……
分类_pico_feature_length0.05皮米特征长度
textord_underline_threshold0.5宽度占比
边缘子区域0.5子轮廓的最小面积分数
边缘框区域0.875盒子孙子最小面积分数
textord_fp_chop_snap0.5切点到顶点的最大距离
gapmap_大间隙1.75xht 乘数
textord_spline_shift_fraction0.02四边形线间距的比例
textord_spline_outlier_fraction0.1异常值行间距的比例
textord_skew_ile0.5页面倾斜的渐变元素
文本偏移滞后0.02行累积偏差滞后
textord_linespace_iqrlimit0.2线空间的最大四分位距/中位数
文本宽度限制8使斑点形成行的最大宽度
textord_chop_width1.5切割前的最大宽度
textord_expansion_factor1在 expand_rows 中,按以下因子扩展行
textord_overlap_x0.375良好重叠所需的线空间比例
textord_minxh0.25最小 x 高度对应的线宽比例
textord_min_linesize1.25* 初始线大小的 blob 高度
textord_excess_blobsize1.3如果 blob 使行达到这个大小,则创建新行。
textord_occupancy_threshold0.4邻域比例
文本下划线宽度2下划线大小的倍数
textord_min_blob_height_fraction0.75最小斑点高度/顶部,以便将斑点顶部包含在 x 高度统计中
textord_xheight_mode_fraction0.4最小堆高以达到 x 高度
textord_ascheight_mode_fraction0.08最小堆高以达到所需高度
textord_descheight_mode_fraction0.08最小堆高以达到卸料高度
textord_ascx_ratio_min1.25最小容量/x高度
textord_ascx_ratio_max1.8最大容量/x高度
textord_descx_ratio_min0.25最小描述/x高度
textord_descx_ratio_max0.6最大描述/x高度
textord_xheight_error_margin0.1可接受的变异
oldbl_xhfract0.4计算中允许的估计分数
oldbl_dot_error_size1.26点阵的最大纵横比
textord_oldbl_jumplimit0.15新分区的 X 分数
pitsync_joined_edge0.75大块内部的分散物用于切碎
pitsync_offset_freecut_fraction0.25免费切割的百分比
textord_tabvector_vertical_gap_fraction0.5垂直文本中允许的垂直间隙的最大平均斑点宽度比例
textord_tabvector_vertical_box_ratio0.5判定一条线垂直所需的匹配方框比例
textord_projection_scale0.2中段切球的叮当率
textord_balance_factor1不平衡炭单元的Ding率
textord_wordstats_smooth_factor0.05平滑差距统计数据
textord_width_smooth_factor0.1平滑宽度统计
textord_words_width_ile0.4空间估计的 blob 宽度
textord_words_maxspace4x高度的倍数
textord_words_default_maxspace3.5最大可信的第三空间
textord_words_default_minspace0.6x高度的分数
textord_words_min_minspace0.3x高度的分数
textord_words_default_nonspace0.2x高度的分数
textord_words_initial_lower0.25最大初始簇大小
textord_words_initial_upper0.15最小初始簇间距
textord_words_minlarge0.75所需有效缺口比例
textord_words_pitchsd_threshold0.04音调同步阈值
textord_words_def_fixed0.016确定固定阈值
textord_words_def_prop0.09确定属性的阈值
textord_pitch_rowsimilarity0.08相同情况下 x 高度的分数
words_initial_lower0.5最大初始簇大小
words_initial_upper0.15最小初始簇间距
words_default_prop_nonspace0.25x高度的分数
words_default_fixed_space0.75x高度的分数
words_default_fixed_limit0.6允许的尺寸偏差
textord_words_definite_spread0.3非模糊间距区域
textord_spacesize_ratiofp2.8最小空间/非空间比率
textord_spacesize_ratioprop2最小空间/非空间比率
textord_fpiqr_ratio1.5音调四分位距/间隙四分位距阈值
textord_max_pitch_iqr0.2Xh 分数噪声
textord_fp_min_width0.5体面斑点的最小宽度
textord_underline_offset0.1要忽略的 x 的比例
ambigs_debug_level0单字符歧义的调试级别
分类调试级别0对调试级别进行分类
分类规范方法1归一化方法……
匹配器调试级别0匹配器调试级别
匹配器调试标志0匹配器调试标志
分类学习调试级别0学习调试级别:
matcher_permanent_classes_min1永久课程的最低数量
matcher_min_examples_for_prototyping3可靠配置阈值
用于原型设计的充分示例匹配器5即使尚未发现歧义,也应启用适应机制。
分类_适应_原型_阈值230自适应 0-255 期间良好原型的阈值
分类_适应_特征_阈值230自适应0-255期间良好特征的阈值
分类剪枝器阈值229分类修剪器阈值 0-255
分类剪枝乘数15类剪枝器乘数 0-255:
分类_cp_截止强度7修枝剪剪切强度:
分类整数匹配器乘数10整数匹配器乘数 0-255:
dawg_debug_level0设置为 1 显示常规调试信息,设置为 2 显示更多详细信息,设置为 3 显示所有调试消息
hyphen_debug_level0连字符单词的调试级别。
stopper_smallword_size2字典词的大小将被视为非字典词
stopper_debug_level0停止器调试级别
tessedit_truncate_wordchoice_log10列表中最多保留多少个单词
最大置换尝试次数10000排列组合过程中要考虑的不同字符选择的最大数量。当用户指定模式时,此限制尤其有用,因为过于通用的模式会导致搜索算法探索过多的选项。
修复未切碎的斑点1修复未被切碎的块状物
chop_debug0切割调试
分割长度10000分体式长度
砍到相同距离2相同距离
砍伐最小轮廓点6轮廓上的最小点数
剪缝绒毛尺寸150seam_pile 中的最大接缝数
切内角-50最小内角弯曲
砍掉最小轮廓区域2000最小轮廓区域
截断居中最大宽度90(较小)切碎块的宽度,我们不在乎切碎块是否靠近中心。
砍伐 x 和 y 重量3X/Y 长度重量
wordrec_debug_level0wordrec 的调试级别
wordrec_max_join_chunks4要关联的碎片最大数量
segsearch_debug_level0SegSearch 调试级别
segsearch_max_pain_points2000队列中存储的最大痛点数量
segsearch_max_futile_classifications20每个数据块中未能找到更佳词语选择的痛点分类的最大数量。
language_model_debug_level0语言模型调试级别
language_model_ngram_order8字符n元语法模型的最大阶数
language_model_viterbi_list_max_num_prunable10BLOB_CHOICEs 中记录的每个维特比列表中可修剪条目(PrunablePath() 为 true 的条目)的最大数量
language_model_viterbi_list_max_size500BLOB_CHOICEs 中记录的维特比列表的最大大小
language_model_min_compound_length3复合词的最小长度
wordrec_display_segmentations0显示分割
tessedit_pageseg_mode6页面段模式:0=仅 OSD,1=自动+OSD,2=仅自动,3=自动,4=列,5=块垂直,6=块,7=行,8=单词,9=单词圆圈,10=字符,11=稀疏文本,12=稀疏文本+OSD,13=原始行(值来自 tesseract/publictypes.h 中的 PageSegMode 枚举)
tessedit_ocr_engine_mode2选择要运行的 OCR 引擎(Tesseract、LSTM 或两者都用)。默认情况下会加载并运行最精确的可用引擎。
页面eg_devanagari_split_strategy0在对梵文文档进行页面分割时,是否使用顶行分割过程。
ocr_devanagari_split_strategy0在对梵文文档进行 OCR 时,是否使用顶行拆分流程?
双向调试0双向调试级别
applybox_debug1调试级别
applybox_page0要应用方框的页码
tessedit_bigram_debug0用于二元语法纠错的调试输出量。
调试噪声消除0调试小轮廓的重新分配
噪声最大值8应用于某个图形的最大变音符号
noise_maxperword16单词可应用的最大变音符号
debug_x_ht_level0重新估算调试
quality_min_initial_alphas_reqd2好词中的字母
tessedit_tess_adaption_mode39用于 TES 的自适应决策算法
多语言调试级别0打印多语言调试信息。
段落调试级别0打印段落调试信息。
tessedit_preserve_min_wd_len2仅保留 wd 超过此期限
crunch_rating_max10每通道评级中的调整长度
crunch_pot_indicators1需要多少潜在指标
crunch_leave_lc_strings4不要对包含长串小写字母的单词进行压缩
crunch_leave_uc_strings4不要对包含长串小写字母的单词进行压缩
长时间重复训练3反复咀嚼单词
crunch_debug0正如它所说
fixsp_non_noise_limit1两侧各有多少个非噪声气泡?
fixsp_done_mode1间距构成要素是什么?
调试修复空间级别0上下文固定空间调试
x_ht_acceptance_tolerance8允许的最大偏差范围为斑点顶部超出字体数据范围
x_ht_min_change8在实际尝试之前,xht 的最小变化
上标调试0下标和上标修复器的调试级别
jpg_质量85设置 JPEG 质量级别
用户自定义DPI0指定输入图像的DPI
min_characters_to_try50指定 OSD 期间尝试的最小字符数
嫌疑级别99可疑标记水平
可疑的短词2不要怀疑字典单词长度超过这个限制。
tessedit_reject_mode0拒绝算法
tessedit_image_border2图像边缘附近的 Rej blbs
最小正常 x 高度像素8拒绝任何小于或等于此值的 x-ht 或 eq。
tessedit_page_number-1-1 -> 所有页面,否则指定要处理的页面
tessedit_parallelize1尽可能并行运行
lstm_选择模式2允许在 hOCR 输出中包含备选符号选项。有效输入值为 0、1 和 2。默认值为 0。输入值为 1 时,每个时间步的备选符号选项都会被包含在内。输入值为 2 时,备选符号选项将从 CTC 过程而非格中提取。这些选项是按字符映射的。
lstm_choice_iterations5设置 lstm_选择模式 中 Beamsearch 的级联迭代次数。请注意,lstm_选择模式 的值必须大于 0 才能产生结果。
tosp_debug_level0调试数据
tosp_enough_space_samples_for_median3或者我们应该用"均值"这个词。
tosp_redo_kern_limit10重新估计行所需的样本数
tosp_few_samples40无需预留间隙,只需预留一个大间隙即可作为工作台。
tosp_短行20使用证书时,无需预留太多证书空间。
tosp_sanity_method1如何避免犯傻
textord_max_noise_size7噪声的像素尺寸
textord_baseline_debug0基线调试级别
textord_noise_sizefraction10最大值所占尺寸的比例
textord_noise_translimit16正常斑点的过渡
textord_noise_sncount1超级规范块以保存行
使用歧义进行适应0利用歧义词来决定是否要改编某个角色
允许 blob 分部1使用可分割的块状物进行切碎
优先划分0优先考虑块状分割而非切割
分类启用学习1启用自适应分类器
tess_cn_matching0字符归一化匹配
tess_bn_matching0基线归一化匹配
启用自适应匹配器1启用自适应分类器
分类_使用_预先调整好的模板0使用预先调整好的分类器模板
分类_保存_已适配模板0将修改后的模板保存到文件中
启用自适应调试器0启用匹配调试器
分类非线性范数0非线性笔画密度归一化
禁用字符片段1不要将字符片段包含在分类器的结果中
分类调试字符片段0为片段训练打开图形调试窗口
matcher_debug_separate_windows0使用两个不同的窗口来调试匹配:一个用于原型,一个用于特征。
分类_bln_numeric_mode0假设输入为数字 [0-9]。
加载系统狗1加载系统单词 dawg。
加载频率_dawg1加载常用词"dawg"。
加载无歧义的狗1加载明确的单词 dawg。
加载_punc_dawg1加载带有标点符号的狗。
加载编号_dawg1用数字图案加载狗。
加载双字母狗1用特殊单词组合加载狗。
仅使用第一个 uft8_step0计算对数概率时,仅使用给定字符串的第一个 UTF-8 步长。
stopper_no_acceptable_choices0使 AcceptableChoice() 始终返回 false。当需要探索所有细分时非常有用。
段非字母脚本0不要使用任何字母特有的技巧。对于草书或固有固定音高的脚本,请在 trainingdata 配置文件中将其设置为 true。
保存文档0保存文档 Words
合并矩阵中的片段1合并评分矩阵中的碎片,合并后删除碎片。
wordrec_enable_assoc1关联器使能
force_word_assoc0强制关联器运行,无论 enable_assoc 的值是多少。这用于中日韩语,因为中日韩语需要进行组件分组。
启用1启用斩波
垂直爬行0垂直蠕变
砍新缝堆1使用新的缝隙堆
假设固定音高字符段0在字符分割中加入固定音调启发式方法
wordrec_skip_no_truth_words0仅对 BlamerBundle 中记录为"真实"的词语运行 OCR。
wordrec_debug_blamer0打印 blamer 调试信息
wordrec_run_blamer0试图找出错误责任人
保存备选方案1保存在分割和分段搜索过程中找到的备选路径
language_model_ngram_on0启用/禁用字符n元语法模型
language_model_ngram_仅使用第一个 uft8_step0计算对数概率时,仅使用给定字符串的第一个 UTF-8 步长。
language_model_ngram_space_delimited_language1单词之间以空格分隔。
language_model_use_sigmoidal_certainty0使用S型曲线评分来评估确定性
tessedit_resegment_from_boxes0从盒文件中获取分割和标签
tessedit_resegment_from_line_boxes0将单词/行框文件转换为字符框文件
tessedit_train_from_boxes0从带框字符生成训练数据
tessedit_make_boxes_from_boxes0从带框字符生成更多框
tessedit_train_line_recognizer0将输入拆分成行,并重新映射框(如果存在)。
tessedit_dump_pageseg_images0转储页面分割过程中生成的中间图像
tessedit_do_invert1Try inverting the image in `LSTMRecognizeWord`
tessedit_ambigs_training0进行歧义培训
tessedit_adaption_debug0生成并打印适配调试信息
applybox_learn_chars_and_char_frags_mode0学习字符片段(如在特殊低曝光模式下所做的那样)以及完整的字符。
applybox_learn_ngrams_mode0假设每个边界框都包含 n 元语法。仅学习那些轮廓在水平方向上重叠的 n 元语法。
tessedit_display_outwords0绘制输出词
tessedit_dump_choices0转储字符选择
tessedit_timing_debug0打印计时统计数据
tessedit_fix_fuzzy_spaces1尝试改进模糊空间
tessedit_unrej_any_wd0别费心考虑措辞的合理性了。
tessedit_fix_hyphens1双连字符?
tessedit_enable_doc_dict1将单词添加到文档词典中
tessedit_debug_fonts0每个字符输出字体信息
tessedit_debug_block_rejection0块和行统计信息
tessedit_enable_bigram_correction1启用基于二元词词典的纠错功能。
tessedit_enable_dict_correction0启用基于词典的单字纠错功能。
启用降噪1当小轮廓线干扰版面分析,导致无法区分变音符号和噪声时,应移除并根据情况重新分配它们。
tessedit_minimal_rej_pass10对第一遍输出进行最小程度的剔除
tessedit_test_adaptation0测试适应性标准
测试点0测试点
基于段落文本1对帖子文本识别进行段落检测(更准确)
lstm_use_matrix1使用 LSTM 的评级矩阵/束搜索
tessedit_good_quality_unrej1减少对优秀文档的拒稿
tessedit_use_reject_spaces1拒绝空格?
tessedit_preserve_blk_rej_perfect_wds1仅 rej 部分拒绝了块拒绝中的单词
tessedit_preserve_row_rej_perfect_wds1行拒绝中只有部分拒绝的词
tessedit_dont_blkrej_good_wds0使用分词质量指标
tessedit_dont_rowrej_good_wds0使用分词质量指标
tessedit_row_rej_good_docs1对优秀文档应用行拒绝规则
tessedit_reject_bad_qual_wds1拒绝所有劣质wds
tessedit_debug_doc_rejection0页面统计
tessedit_debug_quality_metrics0输出数据到调试文件
bland_unrej0未检查的拒绝潜力
unlv_tilde_crunching0Mark v.bad words for tilde crunch
hocr_font_info0将字体信息添加到 hocr 输出
hocr_char_boxes0将每个字符的坐标添加到 hocr 输出中
crunch_early_merge_tess_fails1文字处理之前?
crunch_early_convert_bad_unlv_chs0提前取出~^?
crunch_terrible_garbage1正如它所说
crunch_leave_ok_strings1不要触碰敏感的弦
crunch_accept_ok1在 okstring 中使用可接受性
crunch_leave_accept_strings0不要用锅碾碎敏感的弦
包含数值0小提琴字母
tessedit_prefer_joined_punct0奖励标点符号连接
tessedit_write_block_separators0在输出中写入块分隔符
tessedit_write_rep_codes0编写重复字符代码
tessedit_write_unlv0写入 .unlv 输出文件
tessedit_create_txt0写入 .txt 输出文件
tessedit_create_hocr0写入 .html hOCR 输出文件
tessedit_create_alto0写入 .xml ALTO 文件
tessedit_create_lstmbox0写入用于 LSTM 训练的 .box 文件
tessedit_create_tsv0写入 .tsv 输出文件
tessedit_create_wordstrbox0以 WordStr 格式写入 .box 输出文件
tessedit_create_pdf0写入 .pdf 输出文件
textonly_pdf0创建仅包含一个不可见文本层的 PDF 文件
可疑约束_1Il0UNLV 保留 1Il 字符被拒绝
tessedit_minimal_rejection0仅拒绝测试失败
tessedit_zero_rejection0不要拒绝任何事
tessedit_word_for_word0确保每个 WERD 输出恰好包含一个单词
tessedit_zero_kelvin_rejection0什么都不要拒绝
tessedit_rejection_debug0适配调试
tessedit_flip_0O1上下文 0O O0 翻转
rej_trust_doc_dawg0在 11l 配置检测器中使用 DOC dawg
rej_1Il_use_dict_word0使用字典测试
rej_1Il_trust_permuter_type1不要重复检查
rej_use_tess_accepted1个体拒绝控制
rej_use_tess_blanks1个体拒绝控制
rej_use_good_perm1个体拒绝控制
rej_use_sensible_wd0扩展、切换、检查
rej_alphas_in_number_perm0扩展、切换、检查
tessedit_create_boxfile0输出带框的文本
tessedit_write_images0从IPE捕获图像
交互式显示模式0以交互方式运行?
tessedit_override_permuter1根据 dict_word
tessedit_use_primary_params_model0在多语言模式下,使用主要语言的参数模型
textord_tabfind_show_vlines0调试行查找
textord_use_cjk_fp_model0采用中日韩固定螺距模型
poly_allow_detailed_fx0允许特征提取器查看原始轮廓
tessedit_init_config_only0仅使用配置文件进行初始化。如果实例不用于 OCR,而仅用于布局分析等用途,则此方法很有用。
textord_equation_detect0开启方程式检测器
textord_tabfind_vertical_text1启用垂直检测
textord_tabfind_force_vertical_text0强制使用垂直文本页面模式
保留词间空格0保留多个词间空格
pageseg_apply_music_mask1检测五线谱并移除交叉部分
textord_single_height_mode0脚本没有 x 高度,因此请使用单模式
tosp_old_to_method0太空统计数据是否使用预切?
tosp_old_to_constrain_sp_kn0约束 old_to_method 的词间和词内间隙的相对值。
tosp_only_use_prop_rows1块统计数据是否适用于固定间距行?
tosp_force_wordbreak_on_punct0强制以标点符号断词,以断开非空格分隔语言中的长行
tosp_use_pre_chopping0太空统计数据是否使用预切?
tosp_old_to_bug_fix0修复旧代码中疑似的错误
tosp_block_use_cert_spaces1仅统计明显的空间
tosp_row_use_cert_spaces1仅统计明显的空间
tosp_narrow_blobs_not_cert1仅统计明显的空间
tosp_row_use_cert_spaces11仅统计明显的空间
tosp_recovery_isolated_row_stats1当证书空间不足时,单独使用行。
tosp_only_small_gaps_for_kern0更好的猜测
tosp_all_flips_fuzzy0将任何翻转传递给上下文?
tosp_fuzzy_limit_all1不要将 kn->sp 模糊限制限制在表中
tosp_stats_use_xht_gaps1在 xht 间隙内使用 wd 刹车
tosp_use_xht_gaps1在 xht 间隙内使用 wd 刹车
tosp_only_use_xht_gaps0仅在 xht 间隙内用于 wd 刹车
tosp_rule_9_test_point0不要将 kn 更改为标点符号旁边的空格
tosp_flip_fuzz_kn_to_sp1默认翻转
tosp_flip_fuzz_sp_to_kn1默认翻转
tosp_improve_thresh0启用改进启发式
textord_no_rejects0不要移除噪声块
textord_show_blobs0显示未分类的斑点
textord_show_boxes0显示未分类的斑点
textord_noise_rejwords1拒绝类似噪音的词语
textord_noise_rejrows1剔除噪声行
textord_noise_debug0调试行垃圾检测器
classify_learn_debug_str类 str 用于调试学习
用户单词文件用户提供的单词的文件名。
用户词后缀tessdata 中用户提供的单词的后缀。
用户模式文件用户提供的模式的文件名。
用户模式后缀tessdata 中用户提供的模式的后缀。
输出歧义词文件词典中发现的歧义的输出文件
待调试单词应该将哪个停止器调试信息打印到标准输出的单词
tessedit_char_blacklist不识别字符黑名单
tessedit_char_whitelist要识别的字符白名单
tessedit_char_unblacklist要覆盖 tessedit_char_blacklist 的字符列表
tessedit_write_params_to_file将所有参数写入指定文件。
应用框曝光模式.exp曝光值在图像文件名中遵循此模式。图像文件名应采用 [lang].[fontname].exp [num].tif 格式。
chs_leading_punct('`"前导标点
chs_trailing_punct1).,;:?!第一行末尾标点符号
chs_trailing_punct2)'`"第二行末尾标点符号
轮廓_奇特%|非标准数量的轮廓
outlines_2ij!?%":;非标准数量的轮廓
数字标点符号.,标点符号预计在数字范围内
未识别的字符|未识别斑点的输出字符
ok_repeated_ch_non_alphanum_wds-?*=允许神经网络取消拒绝
冲突集 I_l_1Il1 []Il1冲突集
文件类型.tif文件扩展名
tessedit_load_sublangs要使用此插件加载的语言列表
页面分隔符页面分隔符(默认为换页控制字符)
分类字符规范范围0.2字符归一化范围...
分类最高评分率1.5分类器评级之间的否决比率
分类最大确定性边际5.5分类器确定性之间的否决差异
匹配器_良好阈值0.125精彩对决(0-1)
匹配器可靠自适应结果0精彩比赛(0-1)
匹配器完美阈值0.02完美匹配(0-1)
matcher_bad_match_pad0.15糟糕的比赛垫(0-1)
匹配器评分差距0.1新模板边距(0-1)
匹配器平均噪声大小12平均噪声斑点长度
matcher_clustering_max_angle_delta0.015原型聚类的最大角度变化
分类不合格垃圾惩罚0当非字母元素垂直偏离其预期的文本行位置时,将适用惩罚。
评分量表1.5评级缩放因子
确定性规模20确定性缩放因子
tessedit_class_miss_scale0.00390625未使用特征的比例因子
分类适应剪枝因子2.5修剪效果不佳的结果比最佳结果还要糟糕得多
分类适应剪枝阈值-1分类适应剪枝因子 开始的阈值
分类字符片段垃圾确定性阈值-3将看起来不像完整字符的片段从训练和适应过程中排除。
斑点大尺寸0.3最大大斑点尺寸
斑点评级惩罚10噪音处罚将加到最差评级上。
x高度惩罚下标0.125如果单词中有下标或上标,则加罚分(0.1 = 10%),否则没问题。
x高度惩罚不一致0.25如果 x 高度不一致,则加罚分(0.1 = 10%)。
词段惩罚字典_词频1对于大小写匹配良好且在给定语言中频繁出现的单词,得分倍数(越低越好)。
segment_penalty_dict_case_ok1.1区分大小写的单词匹配得分倍数(数值越低越好)。
segment_penalty_dict_case_bad1.3125单词匹配的默认得分倍数,可能存在大小写问题(数值越低越好)。
segment_penalty_dict_nonword1.25对于与字典词不匹配的字形片段分割结果,得分倍数(数值越低越好)。
段惩罚垃圾1.5对于大小写错误、不在字典中且看起来像垃圾的字符串,得分倍数(越低越好)。
确定性规模20确定性缩放因子
stopper_nondict_certainty_base-2.5非词典词的确定性阈值
stopper_phase2_certainty_rejection_offset1拒绝确定性补偿
stopper_certainty_per_char-0.5确定要为字典中每个大于小单词长度的字符添加内容。
stopper_allowable_character_badness3一个词中允许的最大确定性变化(以西格玛为单位)
doc_dict_pending_threshold0使用待定字典的最差确定性
doc_dict_certainty_threshold-2.25可插入文档词典的词语的最差确定性
tessedit_certainty_threshold-2.25良好的斑点限制
分割旋钮0.5分体式长度调节
切重叠旋钮0.9分割重叠调整
切碎中心旋钮0.15分体式中心调节
切碎/锋利度旋钮0.06分割锐度调整
切宽调整旋钮5宽度变化调整
分割100OK 分割限制
切碎好_分裂50良好的分摊限额
segsearch_max_char_wh_ratio2最大字符宽高比

常见问题解答

如何使用 C# 中的 OCR 将图像转换为文本?

您可以通过使用 IronOCR 库中的 IronTesseract 在 C# 中将图像转换为文本。首先,通过 NuGet 安装库,创建一个 IronTesseract 实例,并使用 Read 方法处理图像并提取文本。

如何在 C# 中配置 OCR 的语言设置?

在 IronTesseract 中,您可以通过配置 Language 属性来设置 OCR 处理的语言。这可以让您指定图像中文本所写的语言,从而提高准确性。

IronTesseract 是否能够同时处理文本提取和条形码读取?

是的,IronTesseract 可以同时处理文本提取和条形码读取。您可以通过设置 Configuration.ReadBarcodes 属性为 true 来启用条形码读取,从而允许 OCR 引擎从扫描的图像中读取条形码。

在 C# OCR 中,Tesseract 配置变量有什么用途?

IronTesseract 中的 Tesseract 配置变量用于微调 OCR 过程。开发人员可以使用 IronOcr.TesseractConfiguration 类来调整设置,例如字符白名单、黑名单和其他处理参数。

如何在 OCR 处理中允许字符白名单?

要在 IronTesseract 的 OCR 处理中允许字符白名单,您可以设置 Configuration.WhiteListCharacters 属性,仅包含您希望识别的字符,从而提高特定任务的 OCR 准确性。

如何解决 C# 中常见的 OCR 问题?

C# 中的 IronTesseract 常见 OCR 问题可通过调整配置、确保语言设置和图像质量解决,使用 Configuration 属性可优化结果。

在哪里可以找到 IronOCR 中 Tesseract 配置变量的文档?

IronOCR 中 Tesseract 配置变量的文档可以在 IronOcr.TesseractConfiguration 类文档中找到。它提供了变量列表、默认值及其功能的说明。

如何在 C# 中将 OCR 结果保存为可搜索的 PDF?

您可以在 C# 中使用 IronTesseract,通过在使用 OCR 引擎处理图像后利用 SaveAsSearchablePdf 方法来将 OCR 结果保存为可搜索的 PDF,从而在 PDF 内轻松进行文本搜索。

使用 IronTesseract 进行 .NET OCR 任务有什么好处?

IronTesseract 为 .NET OCR 任务提供了许多好处,包括简化的 API、多语言支持、条形码读取能力和广泛的配置选项,以根据特定需求调整 OCR 过程。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

审核者
Jeff Fritz
Jeffrey T. Fritz
首席项目经理 - .NET 社区团队
Jeff 也是 .NET 和 Visual Studio 团队的首席项目经理。他是 .NET Conf 虚拟会议系列的执行制片人,并主持“Fritz and Friends”直播节目,每周两次与观众一起谈论技术并编写代码。Jeff 撰写研讨会、演示文稿并计划包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP 峰会在内的最大型微软开发者活动的内容。
准备开始了吗?
Nuget 下载 5,167,857 | Version: 2025.11 刚刚发布