C#에서 Iron Tesseract를 사용하는 방법
C#의 Iron Tesseract는 IronTesseract 인스턴스를 생성하고, 언어 및 OCR 설정을 통해 구성하며, 이미지나 PDF를 포함하는 OcrInput 객체에서 Read() 메서드를 호출하여 사용합니다. 이것은 Tesseract 5의 최적화된 엔진을 사용하여 텍스트 이미지를 검색 가능한 PDF로 변환합니다.
IronOCR은 Iron Tesseract라고 알려진 맞춤형으로 최적화된 Tesseract 5를 활용하기 위한 직관적인 API를 제공합니다. IronOCR 및 IronTesseract를 사용하면 텍스트 이미지와 스캔한 문서를 텍스트 및 검색 가능한 PDF로 변환할 수 있습니다. 이 라이브러리는 125개 국제 언어를 지원하며 바코드 판독 및 컴퓨터 비전 과 같은 고급 기능을 포함하고 있습니다.
빠른 시작: C#에서 IronTesseract 구성 설정하기
이 예제는 특정 설정으로 IronTesseract를 구성하고 한 줄의 코드로 OCR을 수행하는 방법을 보여줍니다.
-
NuGet 패키지 관리자를 사용하여 https://www.nuget.org/packages/IronOcr 설치하기
-
다음 코드 조각을 복사하여 실행하세요.
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")); -
실제 운영 환경에서 테스트할 수 있도록 배포하세요.
무료 체험판으로 오늘 프로젝트에서 IronOCR 사용 시작하기
기본 OCR 워크플로우
- NuGet을 사용하여 OCR 라이브러리를 설치하면 이미지를 읽을 수 있습니다.
- Custom `Tesseract 5` 활용하여 OCR을 수행하십시오.
- 처리할 이미지나 PDF 파일과 같은 원하는 문서를 불러오세요.
- 추출된 텍스트를 콘솔이나 파일에 출력합니다.
- 결과를 검색 가능한 PDF 파일로 저장하세요.
IronTesseract 인스턴스를 어떻게 생성하나요?
다음 코드를 사용하여 Tesseract 객체를 초기화하세요.
:path=/static-assets/ocr/content-code-examples/how-to/irontesseract-initialize-irontesseract.cs
using IronOcr;
IronTesseract ocr = new IronTesseract();
Imports IronOcr
Dim ocr As New IronTesseract()
IronTesseract의 동작을 다양한 언어를 선택하고, 바코드 읽기를 활성화하며, 문자 허용/차단 리스트를 설정하여 사용자 정의할 수 있습니다. IronOCR은 OCR 프로세스를 세밀하게 조정할 수 있는 포괄적인 구성 옵션을 제공합니다.
: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
}
구성이 완료되면 Tesseract 기능을 사용하여 OcrInput 객체를 읽을 수 있습니다. 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
복잡한 시나리오의 경우 멀티스레딩 기능을 활용하여 여러 문서를 동시에 처리함으로써 일괄 작업 성능을 크게 향상시킬 수 있습니다.
고급 테서랙트 구성 변수는 무엇인가요?
IronOcr Tesseract 인터페이스는 IronOcr.TesseractConfiguration 클래스를 통해 Tesseract 구성 변수를 완벽하게 제어할 수 있도록 합니다. 이러한 고급 설정을 통해 저품질 스캔 이미지 보정 이나 특정 문서 유형 읽기 와 같은 특정 사용 사례에 맞게 OCR 성능을 최적화할 수 있습니다.
코드에서 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)
IronOCR은 다양한 문서 유형에 맞는 특수 설정도 제공합니다. 예를 들어 여권 판독 이나 MICR 수표 처리 시 특정 전처리 필터 및 영역 감지 기능을 적용하여 정확도를 향상시킬 수 있습니다.
재무 문서에 대한 구성 예시:
:path=/static-assets/ocr/content-code-examples/how-to/iron-tesseract-6.cs
// Example: Configure for financial documents
IronTesseract ocr = new IronTesseract
{
Language = OcrLanguage.English,
Configuration = new TesseractConfiguration
{
PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock,
TesseractVariables = new Dictionary<string, object>
{
["tessedit_char_whitelist"] = "0123456789.$,",
["textord_heavy_nr"] = false,
["edges_max_children_per_outline"] = 10
}
}
};
// Apply preprocessing filters for better accuracy
using OcrInput input = new OcrInput();
input.LoadPdf("financial-document.pdf");
input.Deskew();
input.EnhanceResolution(300);
OcrResult result = ocr.Read(input);
Imports IronOcr
' Example: Configure for financial documents
Dim ocr As New IronTesseract With {
.Language = OcrLanguage.English,
.Configuration = New TesseractConfiguration With {
.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock,
.TesseractVariables = New Dictionary(Of String, Object) From {
{"tessedit_char_whitelist", "0123456789.$,"},
{"textord_heavy_nr", False},
{"edges_max_children_per_outline", 10}
}
}
}
' Apply preprocessing filters for better accuracy
Using input As New OcrInput()
input.LoadPdf("financial-document.pdf")
input.Deskew()
input.EnhanceResolution(300)
Dim result As OcrResult = ocr.Read(input)
End Using
테서랙트의 모든 설정 변수 목록은 무엇입니까?
IronTesseract.Configuration.TesseractVariables["key"] = value;을 사용하여 설정할 수 있습니다. 구성 변수를 사용하면 특정 문서에 맞는 최적의 결과를 얻기 위해 OCR 동작을 세밀하게 조정할 수 있습니다. OCR 성능 최적화에 대한 자세한 지침은 빠른 OCR 구성 가이드를 참조하십시오.
| 테서랙트 설정 변수 | Default | 의미 |
|---|---|---|
| classify_num_cp_levels | 3 | 클래스 가지치기 레벨 수 |
| 텍스트드_디버그_탭찾기 | 0 | 디버그 탭 찾기 |
| textord_debug_bugs | 0 | 탭 찾기 버그 관련 출력 기능을 켜세요 |
| textord_testregion_left | -1 | 디버그 보고 사각형의 왼쪽 가장자리 |
| 텍스트_테스트지역_상단 | -1 | 디버그 보고 사각형의 상단 가장자리 |
| 텍스트_테스트지역_오른쪽 | 2147483647 | 디버그 사각형의 오른쪽 가장자리 |
| 텍스트_테스트지역_하단 | 2147483647 | 디버그 사각형의 하단 가장자리 |
| textord_tabfind_show_partitions | 0 | 파티션 경계를 표시하고, 1보다 크면 대기합니다. |
| 데바나가리_분할_디버그레벨 | 0 | 분할된 시로-레카 프로세스의 디버그 레벨입니다. |
| 엣지_아웃당 최대 자식 수 | 10 | 문자 윤곽선 내 자식 요소의 최대 개수 |
| edges_max_children_layers | 5 | 캐릭터 윤곽선 내부에 중첩된 자식 요소의 최대 레이어 수 |
| 손자녀당 엣지_자녀_ | 10 | 외곽선 던지기의 중요도 비율 |
| 엣지_자식_카운트_제한 | 45 | 덩어리에 허용되는 최대 구멍 수 |
| edges_min_nonhole | 12 | 상자 안에 잠재적인 숯을 위한 최소 픽셀 수 |
| 모서리_경로_비율 | 40 | Max lensq/area for acceptable child outline |
| textord_fp_chop_error | 2 | 최대 허용 절단 세포 굽힘 |
| textord_tabfind_show_images | 0 | Show image blobs |
| 텍스트_skewsmooth_offset | 4 | 평활도 요인 |
| 텍스트_skewsmooth_offset2 | 1 | 평활도 요인 |
| 텍스트_테스트_x | -2147483647 | 테스트 포인트의 좌표 |
| 텍스트_테스트_y | -2147483647 | 테스트 포인트의 좌표 |
| textord_min_blobs_in_row | 4 | 그래디언트 계산 전 최소 블롭 수 |
| textord_spline_minblobs | 8 | Min blobs in each spline segment |
| textord_spline_medianwin | 6 | Size of window for spline segmentation |
| textord_max_blob_overlaps | 4 | Max number of blobs a big blob can overlap |
| 텍스트_최소 x 높이 | 10 | Min credible pixel xheight |
| textord_lms_line_trials | 12 | Number of linew fits to do |
| 오래된 구멍 손실 수 | 10 | Max lost before fallback line used |
| pitsync_linear_version | 6 | Use new fast algorithm |
| pitsync_fake_depth | 1 | Max advance fake generation |
| textord_tabfind_show_strokewidths | 0 | Show stroke widths |
| 텍스트드_도트매트릭스_간격 | 3 | Max pixel gap for broken pixed pitch |
| 텍스트_디버그_블록 | 0 | Block to do debug on |
| 텍스트드 피치 범위 | 2 | Max range test on pitch |
| textord_words_veto_power | 5 | Rows required to outvote a veto |
| equationdetect_save_bi_image | 0 | Save input bi image |
| equationdetect_save_spt_image | 0 | Save special character image |
| equationdetect_save_seed_image | 0 | Save the seed image |
| equationdetect_save_merged_image | 0 | Save the merged image |
| 폴리_디버그 | 0 | Debug old poly |
| 폴리 와이드 오브젝트_베터 | 1 | More accurate approx on wide things |
| 단어 표시 분할 | 0 | Display splits |
| 텍스트_디버그_인쇄 가능 | 0 | Make debug windows printable |
| 텍스트 공간 크기는 가변적입니다 | 0 | If true, word delimiter spaces are assumed to have variable width, even though characters have fixed pitch. |
| textord_tabfind_show_initial_partitions | 0 | Show partition bounds |
| textord_tabfind_show_reject_blobs | 0 | Show blobs rejected as noise |
| textord_tabfind_show_columns | 0 | Show column bounds |
| textord_tabfind_show_blocks | 0 | Show final block bounds |
| textord_tabfind_find_tables | 1 | run table detection |
| 데바나가리_분할_디버그이미지 | 0 | Whether to create a debug image for split shiro-rekha process. |
| textord_show_fixed_cuts | 0 | Draw fixed pitch cell boundaries |
| edges_use_new_outline_complexity | 0 | Use the new outline complexity module |
| edges_debug | 0 | turn on debugging for this module |
| edges_children_fix | 0 | Remove boxy parents of char-like children |
| gapmap_debug | 0 | Say which blocks have tables |
| gapmap_use_ends | 0 | Use large space at start and end of rows |
| gapmap_no_isolated_quanta | 0 | Ensure gaps not less than 2quanta wide |
| 텍스트_헤비_nr | 0 | Vigorously remove noise |
| textord_show_initial_rows | 0 | Display row accumulation |
| textord_show_parallel_rows | 0 | Display page correlated rows |
| textord_show_expanded_rows | 0 | Display rows after expanding |
| textord_show_final_rows | 0 | Display rows after final fitting |
| textord_show_final_blobs | 0 | Display blob bounds after pre-ass |
| 텍스트 테스트_풍경 | 0 | Tests refer to land/port |
| textord_parallel_baselines | 1 | Force parallel baselines |
| textord_straight_baselines | 0 | Force straight baselines |
| textord_old_baselines | 1 | Use old baseline algorithm |
| 텍스트_올드_x 높이 | 0 | Use old xheight algorithm |
| textord_fix_xheight_bug | 1 | Use spline baseline |
| textord_fix_makerow_bug | 1 | Prevent multiple baselines |
| textord_debug_xheights | 0 | Test xheight algorithms |
| 텍스트_편향_왜곡 계산 | 1 | Bias skew estimates with line length |
| 텍스트_보간_기울기 | 1 | Interpolate across gaps |
| textord_new_initial_xheight | 1 | Use test xheight mechanism |
| 텍스트드_디버그_블롭 | 0 | Print test blob information |
| 텍스트_정말_오래된_x높이 | 0 | Use original wiseowl xheight |
| textord_oldbl_debug | 0 | Debug old baseline generation |
| textord_debug_baselines | 0 | Debug baseline generation |
| textord_oldbl_paradef | 1 | Use para default mechanism |
| textord_oldbl_split_splines | 1 | Split stepped splines |
| textord_oldbl_merge_parts | 1 | Merge suspect partitions |
| oldbl_corrfix | 1 | Improve correlation of heights |
| oldbl_xhfix | 0 | Fix bug in modes threshold for xheights |
| textord_ocropus_mode | 0 | Make baselines for ocropus |
| textord_tabfind_only_strokewidths | 0 | Only run stroke widths |
| textord_tabfind_show_initialtabs | 0 | Show tab candidates |
| textord_tabfind_show_finaltabs | 0 | Show tab vectors |
| textord_show_tables | 0 | Show table regions |
| textord_tablefind_show_mark | 0 | Debug table marking steps in detail |
| textord_tablefind_show_stats | 0 | Show page stats used in table finding |
| textord_tablefind_recognize_tables | 0 | Enables the table recognizer for table layout and filtering. |
| 텍스트_올_프로프 | 0 | All doc is proportial text |
| 텍스트드 디버그 피치 테스트 | 0 | Debug on fixed pitch test |
| textord_disable_pitch_test | 0 | Turn off dp fixed pitch algorithm |
| textord_fast_pitch_test | 0 | Do even faster pitch algorithm |
| textord_debug_pitch_metric | 0 | Write full metric stuff |
| textord_show_row_cuts | 0 | Draw row-level cuts |
| textord_show_page_cuts | 0 | Draw page-level cuts |
| 텍스트드_피치_치트 | 0 | Use correct answer for fixed/prop |
| textord_blockndoc_fixed | 0 | Attempt whole doc/block fixed pitch |
| textord_show_initial_words | 0 | Display separate words |
| textord_show_new_words | 0 | Display separate words |
| textord_show_fixed_words | 0 | Display forced fixed pitch words |
| textord_blocksall_fixed | 0 | Moan about prop blocks |
| textord_blocksall_prop | 0 | Moan about fixed pitch blocks |
| textord_blocksall_testing | 0 | Dump stats when moaning |
| 텍스트_테스트_모드 | 0 | Do current test |
| 텍스트_피치_로우 유사성 | 0.08 | Fraction of xheight for sameness |
| 단어_이니셜_낮음 | 0.5 | Max initial cluster size |
| 단어_첫 글자_대문자 | 0.15 | Min initial cluster spacing |
| 단어_기본 속성_공백 | 0.25 | Fraction of xheight |
| 단어_기본_고정_공백 | 0.75 | Fraction of xheight |
| 단어 기본 고정 제한 | 0.6 | Allowed size variance |
| textord_words_definite_spread | 0.3 | Non-fuzzy spacing region |
| 텍스트_공간 크기_비율 | 2.8 | Min ratio space/nonspace |
| 텍스트_공간 크기_비율 속성 | 2 | Min ratio space/nonspace |
| 텍스트드_fpiqr_비율 | 1.5 | Pitch IQR/Gap IQR threshold |
| 텍스트드_맥스_피치_iqr | 0.2 | Xh fraction noise in pitch |
| textord_fp_min_width | 0.5 | Min width of decent blobs |
| 텍스트_밑줄_오프셋 | 0.1 | Fraction of x to ignore |
| ambigs_debug_level | 0 | Debug level for unichar ambiguities |
| 디버그 레벨 분류 | 0 | Classify debug level |
| 분류_정규화_방법 | 1 | Normalization Method ... |
| 매처 디버그 레벨 | 0 | Matcher Debug Level |
| 매처_디버그_플래그 | 0 | Matcher Debug Flags |
| classify_learning_debug_level | 0 | Learning Debug Level: |
| matcher_permanent_classes_min | 1 | Min # of permanent classes |
| 프로토타이핑을 위한 matcher_min_examples_for_prototyping | 3 | Reliable Config Threshold |
| 프로토타이핑을 위한 충분한 예시들을 매처에 추가 | 5 | Enable adaption even if the ambiguities have not been seen |
| classify_adapt_proto_threshold | 230 | Threshold for good protos during adaptive 0-255 |
| classify_adapt_feature_threshold | 230 | Threshold for good features during adaptive 0-255 |
| classify_class_pruner_threshold | 229 | Class Pruner Threshold 0-255 |
| 클래스_프루너_승수 | 15 | Class Pruner Multiplier 0-255: |
| classify_cp_cutoff_strength | 7 | Class Pruner CutoffStrength: |
| 정수 매칭 승수 분류 | 10 | Integer Matcher Multiplier 0-255: |
| 개 디버그 레벨 | 0 | Set to 1 for general debug info, to 2 for more details, to 3 to see all the debug messages |
| 하이픈_디버그_레벨 | 0 | Debug level for hyphenated words. |
| stopper_smallword_size | 2 | Size of dict word to be treated as non-dict word |
| 스토퍼 디버그 레벨 | 0 | Stopper debug level |
| tessedit_truncate_wordchoice_log | 10 | Max words to keep in list |
| 최대 변경 시도 횟수 | 10000 | Maximum number of different character choices to consider during permutation. This limit is especially useful when user patterns are specified, since overly generic patterns can result in dawg search exploring an overly large number of options. |
| repair_unchopped_blobs | 1 | Fix blobs that aren't chopped |
| chop_debug | 0 | Chop debug |
| chop_split_length | 10000 | Split Length |
| 같은 거리를 자르다 | 2 | Same distance |
| chop_min_outline_points | 6 | Min Number of Points on Outline |
| chop_seam_pile_size | 150 | Max number of seams in seam_pile |
| chop_inside_angle | -50 | Min Inside Angle Bend |
| 자르기_최소_윤곽선_영역 | 2000 | Min Outline Area |
| chop_centered_maxwidth | 90 | Width of (smaller) chopped blobs above which we don't care that a chop is not near the center. |
| chop_x_y_weight | 3 | X / Y length weight |
| 워드렉 디버그 레벨 | 0 | Debug level for wordrec |
| 단어 검색 최대 조인 청크 | 4 | Max number of broken pieces to associate |
| 세그멘테이션 검색 디버그 레벨 | 0 | SegSearch debug level |
| 세그멘테이션 검색 최대 고통점 | 2000 | Maximum number of pain points stored in the queue |
| segsearch_max_futile_classifications | 20 | Maximum number of pain point classifications per chunk that did not result in finding a better word choice. |
| 언어 모델 디버그 레벨 | 0 | Language model debug level |
| 언어 모델 n-gram 순서 | 8 | Maximum order of the character ngram model |
| 언어 모델_비터비_리스트_ 최대 가지치기 가능 개수 | 10 | Maximum number of prunable (those for which PrunablePath() is true) entries in each viterbi list recorded in BLOB_CHOICEs |
| 언어 모델_viterbi_list_max_size | 500 | Maximum size of viterbi lists recorded in BLOB_CHOICEs |
| 언어 모델 최소 복합 길이 | 3 | Minimum length of compound words |
| 단어 표시 분할 | 0 | Display Segmentations |
| tessedit_pageseg_mode | 6 | Page seg mode: 0=osd only, 1=auto+osd, 2=auto_only, 3=auto, 4=column, 5=block_vert, 6=block, 7=line, 8=word, 9=word_circle, 10=char,11=sparse_text, 12=sparse_text+osd, 13=raw_line (Values from PageSegMode enum in tesseract/publictypes.h) |
| tessedit_ocr_engine_mode | 2 | Which OCR engine(s) to run (Tesseract, LSTM, both). Defaults to loading and running the most accurate available. |
| 페이지eg_devanagari_split_strategy | 0 | Whether to use the top-line splitting process for Devanagari documents while performing page-segmentation. |
| ocr_데바나가리_분할_전략 | 0 | Whether to use the top-line splitting process for Devanagari documents while performing ocr. |
| 비디_디버그 | 0 | Debug level for BiDi |
| applybox_debug | 1 | Debug level |
| applybox_page | 0 | Page number to apply boxes from |
| tessedit_bigram_debug | 0 | Amount of debug output for bigram correction. |
| 디버그 노이즈 제거 | 0 | Debug reassignment of small outlines |
| 노이즈_maxperblob | 8 | Max diacritics to apply to a blob |
| noise_maxperword | 16 | Max diacritics to apply to a word |
| debug_x_ht_level | 0 | Reestimate debug |
| 품질_최소_초기_알파값_요구사항 | 2 | alphas in a good word |
| tessedit_tess_adaption_mode | 39 | Adaptation decision algorithm for tess |
| 다국어 디버그 레벨 | 0 | Print multilang debug info. |
| 단락 디버그 레벨 | 0 | Print paragraph debug info. |
| tessedit_preserve_min_wd_len | 2 | Only preserve wds longer than this |
| 크런치_레이팅_맥스 | 10 | For adj length in rating per ch |
| 크런치팟지표 | 1 | How many potential indicators needed |
| crunch_leave_lc_strings | 4 | Don't crunch words with long lower case strings |
| crunch_leave_uc_strings | 4 | Don't crunch words with long lower case strings |
| 크런치_긴_반복 | 3 | Crunch words with long repetitions |
| crunch_debug | 0 | As it says |
| fixsp_non_noise_limit | 1 | How many non-noise blbs either side? |
| fixsp_done_mode | 1 | What constitues done for spacing |
| debug_fix_space_level | 0 | Contextual fixspace debug |
| x_ht_수용성 | 8 | Max allowed deviation of blob top outside of font data |
| x_ht_min_change | 8 | Min change in xht before actually trying it |
| superscript_debug | 0 | Debug level for sub & superscript fixer |
| jpg_quality | 85 | Set JPEG quality level |
| 사용자 정의 DPI | 0 | Specify DPI for input image |
| 시도할 최소 문자 수 | 50 | Specify minimum characters to try during OSD |
| suspect_level | 99 | Suspect marker level |
| suspect_short_words | 2 | Don't suspect dict wds longer than this |
| tessedit_reject_mode | 0 | Rejection algorithm |
| tessedit_image_border | 2 | Rej blbs near image edge limit |
| 최소 정상 x_ht_픽셀 | 8 | Reject any x-ht lt or eq than this |
| tessedit_page_number | -1 | -1 -> All pages, else specific page to process |
| tessedit_parallelize | 1 | Run in parallel where possible |
| lstm_choice_mode | 2 | Allows to include alternative symbols choices in the hOCR output. Valid input values are 0, 1 and 2. 0 is the default value. With 1 the alternative symbol choices per timestep are included. With 2 alternative symbol choices are extracted from the CTC process instead of the lattice. The choices are mapped per character. |
| lstm_choice_iterations | 5 | Sets the number of cascading iterations for the Beamsearch in lstm_choice_mode. Note that lstm_choice_mode must be set to a value greater than 0 to produce results. |
| tosp_debug_level | 0 | Debug data |
| 중앙값에 대한 충분한 공간 샘플 | 3 | or should we use mean |
| tosp_redo_kern_limit | 10 | No.samples reqd to reestimate for row |
| tosp_few_samples | 40 | No.gaps reqd with 1 large gap to treat as a table |
| tosp_short_row | 20 | No.gaps reqd with few cert spaces to use certs |
| tosp_sanity_method | 1 | How to avoid being silly |
| textord_max_noise_size | 7 | Pixel size of noise |
| 텍스트_베이스라인_디버그 | 0 | Baseline debug level |
| 텍스트_노이즈_크기분 | 10 | Fraction of size for maxima |
| 텍스트드_노이즈_트랜스리밋 | 16 | Transitions for normal blob |
| 텍스트_노이즈_스카운트 | 1 | super norm blobs to save row |
| 적응을 위해 모호함을 사용합니다 | 0 | Use ambigs for deciding whether to adapt to a character |
| 우선순위_분할 | 0 | Prioritize blob division over chopping |
| 분류_활성화_학습 | 1 | Enable adaptive classifier |
| tess_cn_matching | 0 | Character Normalized Matching |
| 테스_bn_매칭 | 0 | Baseline Normalized Matching |
| classify_enable_adaptive_matcher | 1 | Enable adaptive classifier |
| 사전 적응된 템플릿을 분류하고 사용합니다. | 0 | Use pre-adapted classifier templates |
| 적응형 템플릿을 분류하고 저장합니다. | 0 | Save adapted templates to a file |
| classify_enable_adaptive_debugger | 0 | Enable match debugger |
| 비선형 노름 분류 | 0 | Non-linear stroke-density normalization |
| disable_character_fragments | 1 | Do not include character fragments in the results of the classifier |
| classify_debug_character_fragments | 0 | Bring up graphical debugging windows for fragments training |
| matcher_debug_separate_windows | 0 | Use two different windows for debugging the matching: One for the protos and one for the features. |
| classify_bln_numeric_mode | 0 | Assume the input is numbers [0-9]. |
| 로드_시스템_도그 | 1 | Load system word dawg. |
| 로드_freq_dawg | 1 | Load frequent word dawg. |
| 로드_unambig_dawg | 1 | Load unambiguous word dawg. |
| 로드_펀치_도그 | 1 | Load dawg with punctuation patterns. |
| 로드_넘버_도그 | 1 | Load dawg with number patterns. |
| 로드_비그램_도그 | 1 | Load dawg with special word bigrams. |
| use_only_first_uft8_step | 0 | Use only the first UTF8 step of the given string when computing log probabilities. |
| stopper_no_acceptable_choices | 0 | Make AcceptableChoice() always return false. Useful when there is a need to explore all segmentations |
| segment_nonalphabetic_script | 0 | Don't use any alphabetic-specific tricks. Set to true in the traineddata config file for scripts that are cursive or inherently fixed-pitch |
| save_doc_words | 0 | Save Document Words |
| 매트릭스에 조각들을 병합하세요 | 1 | Merge the fragments in the ratings matrix and delete them after merging |
| 단어 검색 활성화 연결 | 1 | Associator Enable |
| 포스_워드_어소크 | 0 | force associator to run regardless of what enable_assoc is. This is used for CJK where component grouping is necessary. |
| chop_enable | 1 | Chop enable |
| 수직 크리프를 자르다 | 0 | Vertical creep |
| chop_new_seam_pile | 1 | Use new seam_pile |
| 고정 피치 문자 세그먼트 가정 | 0 | include fixed-pitch heuristics in char segmentation |
| wordrec_skip_no_truth_words | 0 | Only run OCR for words that had truth recorded in BlamerBundle |
| 워드렉_디버그_블레이머 | 0 | Print blamer debug messages |
| 워드렉_런_블레이머 | 0 | Try to set the blame for errors |
| 대체 선택 사항을 저장하세요 | 1 | Save alternative paths found during chopping and segmentation search |
| language_model_ngram_on | 0 | Turn on/off the use of character ngram model |
| language_model_ngram_use_ only_first_uft8_step | 0 | Use only the first UTF8 step of the given string when computing log probabilities. |
| 언어 모델 n-gram 공간 구분된 언어 | 1 | Words are delimited by space |
| 언어 모델 사용 시그모이드 확실성 | 0 | Use sigmoidal score for certainty |
| tessedit_resegment_from_boxes | 0 | Take segmentation and labeling from box file |
| tessedit_resegment_from_line_boxes | 0 | Conversion of word/line box file to char box file |
| tessedit_train_from_boxes | 0 | Generate training data from boxed chars |
| tessedit_make_boxes_from_boxes | 0 | Generate more boxes from boxed chars |
| tessedit_train_line_recognizer | 0 | Break input into lines and remap boxes if present |
| tessedit_dump_pageseg_images | 0 | Dump intermediate images made during page segmentation |
| tessedit_do_invert | 1 | Try inverting the image in LSTMRecognizeWord |
| tessedit_ambigs_training | 0 | Perform training for ambiguities |
| tessedit_adaption_debug | 0 | Generate and print debug information for adaption |
| applybox_learn_chars_and_char_frags_mode | 0 | Learn both character fragments (as is done in the special low exposure mode) as well as unfragmented characters. |
| applybox_learn_ngrams_mode | 0 | Each bounding box is assumed to contain ngrams. Only learn the ngrams whose outlines overlap horizontally. |
| tessedit_display_outwords | 0 | Draw output words |
| tessedit_dump_choices | 0 | Dump char choices |
| tessedit_timing_debug | 0 | Print timing stats |
| tessedit_fix_fuzzy_spaces | 1 | Try to improve fuzzy spaces |
| tessedit_unrej_any_wd | 0 | Don't bother with word plausibility |
| tessedit_fix_hyphens | 1 | Crunch double hyphens? |
| tessedit_enable_doc_dict | 1 | Add words to the document dictionary |
| tessedit_debug_fonts | 0 | Output font info per char |
| tessedit_debug_block_rejection | 0 | Block and Row stats |
| tessedit_enable_bigram_correction | 1 | Enable correction based on the word bigram dictionary. |
| tessedit_enable_dict_correction | 0 | Enable single word correction based on the dictionary. |
| 노이즈 제거 활성화 | 1 | Remove and conditionally reassign small outlines when they confuse layout analysis, determining diacritics vs noise |
| tessedit_minimal_rej_pass1 | 0 | Do minimal rejection on pass 1 output |
| tessedit_test_adaption | 0 | Test adaption criteria |
| 테스트_pt | 0 | Test for point |
| 단락 텍스트 기반 | 1 | Run paragraph detection on the post-text-recognition (more accurate) |
| lstm_use_matrix | 1 | Use ratings matrix/beam search with lstm |
| tessedit_good_quality_unrej | 1 | Reduce rejection on good docs |
| tessedit_use_reject_spaces | 1 | Reject spaces? |
| tessedit_preserve_blk_rej_perfect_wds | 1 | Only rej partially rejected words in block rejection |
| tessedit_preserve_row_rej_perfect_wds | 1 | Only rej partially rejected words in row rejection |
| tessedit_dont_blkrej_good_wds | 0 | Use word segmentation quality metric |
| tessedit_dont_rowrej_good_wds | 0 | Use word segmentation quality metric |
| tessedit_row_rej_good_docs | 1 | Apply row rejection to good docs |
| tessedit_reject_bad_qual_wds | 1 | Reject all bad quality wds |
| tessedit_debug_doc_rejection | 0 | Page stats |
| tessedit_debug_quality_metrics | 0 | Output data to debug file |
| bland_unrej | 0 | unrej potential with no checks |
| unlv_tilde_crunching | 0 | Mark v.bad words for tilde crunch |
| hocr_font_info | 0 | Add font info to hocr output |
| hocr_char_boxes | 0 | Add coordinates for each character to hocr output |
| crunch_early_merge_tess_fails | 1 | Before word crunch? |
| 크런치_얼리_컨버트_배드_언블_치스 | 0 | Take out ~^ early? |
| 크런치_끔찍한_쓰레기 | 1 | As it says |
| crunch_leave_ok_strings | 1 | Don't touch sensible strings |
| crunch_accept_ok | 1 | Use acceptability in okstring |
| crunch_leave_accept_strings | 0 | Don't pot crunch sensible strings |
| crunch_include_numerals | 0 | Fiddle alpha figures |
| tessedit_prefer_joined_punct | 0 | Reward punctuation joins |
| tessedit_write_block_separators | 0 | Write block separators in output |
| tessedit_write_rep_codes | 0 | Write repetition char code |
| tessedit_write_unlv | 0 | Write .unlv output file |
| tessedit_create_txt | 0 | Write .txt output file |
| tessedit_create_hocr | 0 | Write .html hOCR output file |
| tessedit_create_alto | 0 | Write .xml ALTO file |
| tessedit_create_lstmbox | 0 | Write .box file for LSTM training |
| tessedit_create_tsv | 0 | Write .tsv output file |
| tessedit_create_wordstrbox | 0 | Write WordStr format .box output file |
| tessedit_create_pdf | 0 | Write .pdf output file |
| textonly_pdf | 0 | Create PDF with only one invisible text layer |
| suspect_constrain_1Il | 0 | UNLV keep 1Il chars rejected |
| tessedit_minimal_rejection | 0 | Only reject tess failures |
| tessedit_zero_rejection | 0 | Don't reject ANYTHING |
| tessedit_word_for_word | 0 | Make output have exactly one word per WERD |
| tessedit_zero_kelvin_rejection | 0 | Don't reject ANYTHING AT ALL |
| tessedit_rejection_debug | 0 | Adaption debug |
| tessedit_flip_0O | 1 | Contextual 0O O0 flips |
| rej_trust_doc_dawg | 0 | Use DOC dawg in 11l conf. detector |
| rej_1Il_use_dict_word | 0 | Use dictword test |
| rej_1Il_trust_permuter_type | 1 | Don't double check |
| rej_use_tess_accepted | 1 | Individual rejection control |
| rej_use_tess_blanks | 1 | Individual rejection control |
| rej_use_good_perm | 1 | Individual rejection control |
| rej_use_sensible_wd | 0 | Extend permuter check |
| rej_alphas_in_number_perm | 0 | Extend permuter check |
| tessedit_create_boxfile | 0 | Output text with boxes |
| tessedit_write_images | 0 | Capture the image from the IPE |
| 대화형 표시 모드 | 0 | Run interactively? |
| tessedit_override_permuter | 1 | According to dict_word |
| tessedit_use_primary_params_model | 0 | In multilingual mode use params model of the primary language |
| textord_tabfind_show_vlines | 0 | Debug line finding |
| textord_use_cjk_fp_model | 0 | Use CJK fixed pitch model |
| 폴리_세부적인_fx 허용 | 0 | Allow feature extractors to see the original outline |
| tessedit_init_config_only | 0 | Only initialize with the config file. Useful if the instance is not going to be used for OCR but say only for layout analysis. |
| 텍스트_방정식_탐지 | 0 | Turn on equation detector |
| textord_tabfind_vertical_text | 1 | Enable vertical detection |
| textord_tabfind_force_vertical_text | 0 | Force using vertical text page mode |
| 단어 사이 공백을 보존합니다 | 0 | Preserve multiple interword spaces |
| pageseg_apply_music_mask | 1 | Detect music staff and remove intersecting components |
| 텍스트_싱글_높이_모드 | 0 | Script has no xheight, so use a single mode |
| tosp_old_to_method | 0 | Space stats use prechopping? |
| tosp_old_to_constrain_sp_kn | 0 | Constrain relative values of inter and intra-word gaps for old_to_method. |
| tosp_only_use_prop_rows | 1 | Block stats to use fixed pitch rows? |
| tosp_force_wordbreak_on_punct | 0 | Force word breaks on punct to break long lines in non-space delimited langs |
| tosp_use_pre_chopping | 0 | Space stats use prechopping? |
| tosp_old_to_bug_fix | 0 | Fix suspected bug in old code |
| tosp_block_use_cert_spaces | 1 | Only stat OBVIOUS spaces |
| tosp_row_use_cert_spaces | 1 | Only stat OBVIOUS spaces |
| tosp_narrow_blobs_not_cert | 1 | Only stat OBVIOUS spaces |
| tosp_row_use_cert_spaces1 | 1 | Only stat OBVIOUS spaces |
| tosp_recovery_isolated_row_stats | 1 | Use row alone when inadequate cert spaces |
| tosp_only_small_gaps_for_kern | 0 | Better guess |
| tosp_all_flips_fuzzy | 0 | Pass ANY flip to context? |
| tosp_fuzzy_limit_all | 1 | Don't restrict kn->sp fuzzy limit to tables |
| textord_no_rejects | 0 | Don't remove noise blobs |
| 텍스트_쇼_블롭스 | 0 | Display unsorted blobs |
| 텍스트_표시_박스 | 0 | Display unsorted blobs |
| textord_noise_rejwords | 1 | Reject noise-like words |
| 텍스트_노이즈_리즈로우 | 1 | Reject noise-like rows |
| 텍스트드_노이즈_디버그 | 0 | Debug row garbage detector |
| classify_learn_debug_str | Class str to debug learning | |
| 사용자_단어_파일 | A filename of user-provided words. | |
| 사용자_단어_접미사 | A suffix of user-provided words located in tessdata. | |
| 사용자 패턴 파일 | A filename of user-provided patterns. | |
| 사용자 패턴 접미사 | A suffix of user-provided patterns located in tessdata. | |
| output_ambig_words_file | Output file for ambiguities found in the dictionary | |
| 디버그할 단어 | Word for which stopper debug information should be printed to stdout | |
| tessedit_char_blacklist | Blacklist of chars not to recognize | |
| tessedit_char_whitelist | Whitelist of chars to recognize | |
| tessedit_char_unblacklist | List of chars to override tessedit_char_blacklist | |
| tessedit_write_params_to_file | Write all parameters to the given file. | |
| applybox_exposure_pattern | .exp | Exposure value follows this pattern in the image filename. The name of the image files are expected to be in the form [lang].[fontname].exp [num].tif |
| chs_leading_punct('`" | 선행 구두점 | |
| chs_trailing_punct1 | ).,;:?! | 1st Trailing punctuation |
| chs_trailing_punct2)'`" | 2nd Trailing punctuation | |
| 윤곽선_이상함 | %| | 비표준 윤곽선 수 |
| outlines_2ij!?%":; | 비표준 윤곽선 수 | |
| 숫자 구두점 | ., | Punct. chs expected WITHIN numbers |
| 인식할 수 없는 문자 | | | Output char for unidentified blobs |
| ok_repeated_ch_non_alphanum_wds | -?*= | Allow NN to unrej |
| conflict_set_I_l_1 | Il1 [] | Il1 conflict set |
| 파일 유형 | .tif | Filename extension |
| tessedit_load_sublangs | List of languages to load with this one | |
| 페이지 구분선 | Page separator (default is form feed control character) | |
| classify_char_norm_range | 0.2 | Character Normalization Range ... |
| 최대 등급 비율 분류 | 1.5 | Veto ratio between classifier ratings |
| 최대 확실성 마진 분류 | 5.5 | Veto difference between classifier certainties |
| matcher_good_threshold | 0.125 | Good Match (0-1) |
| 매치어_신뢰할 수 있는_적응형_결과 | 0 | Great Match (0-1) |
| 매처_완벽한_임계값 | 0.02 | Perfect Match (0-1) |
| matcher_bad_match_pad | 0.15 | Bad Match Pad (0-1) |
| 매처_레이팅_마진 | 0.1 | New template margin (0-1) |
| matcher_avg_noise_size | 12 | Avg. noise blob length |
| 매처_클러스터링_최대_각도_델타 | 0.015 | Maximum angle delta for prototype clustering |
| 부적합 분류_정크_벌점 | 0 | Penalty to apply when a non-alnum is vertically out of its expected textline position |
| 평점 척도 | 1.5 | Rating scaling factor |
| 확실성 척도 | 20 | Certainty scaling factor |
| tessedit_class_miss_scale | 0.00390625 | Scale factor for features not used |
| classify_adapted_pruning_factor | 2.5 | Prune poor adapted results this much worse than best result |
| classify_adapted_pruning_threshold | -1 | Threshold at which classify_adapted_pruning_factor starts |
| 문자 조각 분류_쓰레기_확실성_임계값 | -3 | Exclude fragments that do not look like whole characters from training and adaption |
| 스페클_대형_최대 크기 | 0.3 | Max large speckle size |
| 얼룩 등급 페널티 | 10 | Penalty to add to worst rating for noise |
| x높이_페널티_하위첨자 | 0.125 | Score penalty (0.1 = 10%) added if there are subscripts or superscripts in a word, but it is otherwise OK. |
| xheight_penalty_inconsistent | 0.25 | Score penalty (0.1 = 10%) added if an xheight is inconsistent. |
| 세그먼트 페널티 딕셔너리 빈번 단어 | 1 | Score multiplier for word matches which have good case and are frequent in the given language (lower is better). |
| 세그먼트 페널티 딕셔너리 케이스 확인 | 1.1 | Score multiplier for word matches that have good case (lower is better). |
| 세그먼트 페널티 딕셔너리 케이스 잘못됨 | 1.3125 | Default score multiplier for word matches, which may have case issues (lower is better). |
| 세그먼트 페널티 사전 비단어 | 1.25 | Score multiplier for glyph fragment segmentations which do not match a dictionary word (lower is better). |
| 확실성 척도 | 20 | Certainty scaling factor |
| stopper_nondict_certainty_base | -2.5 | Certainty threshold for non-dict words |
| stopper_phase2_certainty_rejection_offset | 1 | Reject certainty offset |
| stopper_certainty_per_char | -0.5 | Certainty to add for each dict char above small word size. |
| stopper_allowable_character_badness | 3 | Max certaintly variation allowed in a word (in sigma) |
| doc_dict_pending_threshold | 0 | Worst certainty for using pending dictionary |
| doc_dict_certainty_threshold | -2.25 | Worst certainty for words that can be inserted into the document dictionary |
| tessedit_확실성_임계값 | -2.25 | Good blob limit |
| chop_split_dist_knob | 0.5 | Split length adjustment |
| chop_overlap_knob | 0.9 | Split overlap adjustment |
| chop_center_knob | 0.15 | Split center adjustment |
| chop_sharpness_knob | 0.06 | Split sharpness adjustment |
| chop_width_change_knob | 5 | Width change adjustment |
| chop_ok_split | 100 | OK split limit |
| chop_good_split | 50 | Good split limit |
| segsearch_max_char_wh_ratio | 2 | 최대 문자 너비 대 높이 비율 |
최상의 결과를 얻으려면 OCR을 적용하기 전에 IronOCR의 이미지 전처리 필터를 사용하는 것이 좋습니다. 이러한 필터는 특히 품질이 낮은 스캔 이미지 나 표 와 같은 복잡한 문서를 다룰 때 정확도를 크게 향상시킬 수 있습니다.
자주 묻는 질문
C#에서 IronTesseract를 OCR에 맞게 설정하는 방법은 무엇인가요?
IronTesseract를 구성하려면 IronTesseract 인스턴스를 생성하고 언어 및 구성과 같은 속성을 설정하세요. OCR 언어(지원되는 125개 언어 중)를 지정하고, 바코드 읽기를 활성화하고, 검색 가능한 PDF 출력을 구성하고, 문자 화이트리스트를 설정할 수 있습니다. 예를 들면 다음과 같습니다. var tesseract = new IronOcr.IronTesseract { Language = IronOcr.OcrLanguage.English, Configuration = new IronOcr.TesseractConfiguration { ReadBarCodes = false, RenderSearchablePdf = true } };
IronTesseract는 어떤 입력 형식을 지원하나요?
IronTesseract는 OcrInput 클래스를 통해 다양한 입력 형식을 지원합니다. 이미지(PNG, JPG 등), PDF 파일, 스캔 문서 등을 처리할 수 있습니다. OcrInput 클래스는 이러한 다양한 형식을 로드하는 유연한 메서드를 제공하여 텍스트가 포함된 거의 모든 문서에 대해 손쉽게 OCR을 수행할 수 있도록 합니다.
IronTesseract를 사용하여 텍스트와 함께 바코드를 읽을 수 있습니까?
네, IronTesseract에는 고급 바코드 인식 기능이 포함되어 있습니다. TesseractConfiguration에서 ReadBarCodes = true로 설정하면 바코드 감지를 활성화할 수 있습니다. 이를 통해 단일 OCR 작업으로 동일한 문서에서 텍스트와 바코드 데이터를 모두 추출할 수 있습니다.
스캔한 문서를 검색 가능한 PDF 파일로 만들려면 어떻게 해야 하나요?
IronTesseract는 TesseractConfiguration에서 RenderSearchablePdf = true로 설정하여 스캔한 문서와 이미지를 검색 가능한 PDF로 변환할 수 있습니다. 이렇게 하면 원본 문서의 모양을 유지하면서 텍스트를 선택하고 검색할 수 있는 PDF 파일이 생성됩니다.
IronTesseract는 OCR에서 어떤 언어를 지원하나요?
IronTesseract는 텍스트 인식에 125개 국제 언어를 지원합니다. IronTesseract 인스턴스의 Language 속성을 설정하여 언어를 지정할 수 있습니다. 예를 들어 IronOcr.OcrLanguage.English, Spanish, Chinese, Arabic 등을 사용할 수 있습니다.
OCR 과정에서 인식되는 문자를 제한할 수 있나요?
네, IronTesseract는 TesseractConfiguration의 WhiteListCharacters 속성을 통해 문자 화이트리스트 및 블랙리스트를 설정할 수 있습니다. 이 기능은 예상되는 문자 집합을 알고 있을 때, 예를 들어 영숫자만으로 인식 범위를 제한할 때 정확도를 향상시키는 데 도움이 됩니다.
여러 문서를 동시에 OCR 처리하려면 어떻게 해야 하나요?
IronTesseract는 일괄 처리를 위한 멀티스레딩 기능을 지원합니다. 병렬 처리를 활용하여 여러 문서를 동시에 OCR 처리할 수 있으므로 대용량 이미지 또는 PDF 파일을 처리할 때 성능이 크게 향상됩니다.
IronOCR은 어떤 버전의 Tesseract를 사용하나요?
IronOCR은 Iron Tesseract라고 알려진 맞춤형 최적화 버전의 Tesseract 5를 사용합니다. 이 향상된 엔진은 표준 Tesseract 구현에 비해 정확도와 성능이 향상되었으며, .NET 애플리케이션과의 호환성도 유지합니다.
IronOCR이 데이터 정확성을 어떻게 향상시킬 수 있습니까?
IronOCR은 고급 인식 알고리즘과 이미지 보정 기능을 통해 데이터 정확성을 향상시켜 텍스트 추출 프로세스를 신뢰할 수 있고 정확하게 보장합니다.
IronOCR의 무료 체험판이 있나요?
네, Iron Software는 IronOCR의 무료 체험판을 제공하여 사용자가 구매 결정을 내리기 전에 기능과 성능을 테스트해볼 수 있습니다.

