메인 콘텐츠로 건너뛰기

라이선스 및 배포

ABBYY FineReader Engine 12는 배포용 전용 설치 유틸리티를 제공합니다. 이 유틸리티를 사용하면 명령줄에서 자동 모드로 워크스테이션에 ABBYY FineReader Engine 라이브러리를 설치할 수 있습니다. 필요한 파일을 복사하여 라이브러리를 수동으로 설치할 수도 있습니다. 자세한 내용은 ABBYY FineReader Engine 라이브러리를 사용하는 애플리케이션 배포를 참조하세요.
하나의 프로젝트에 속한 모든 라이선스는 라이브러리를 초기화하는 함수에 필요한 동일한 Customer Project ID를 공유합니다. 최종 사용자의 Runtime License와 소프트웨어 개발자의 Developer License는 이러한 함수에 전달되는 Customer Project ID와 일치해야 합니다.추가 정보는 ABBYY FineReader Engine 라이브러리를 사용하는 애플리케이션 배포를 참조하세요.
워크스테이션에서 Runtime License를 활성화해야 합니다. 자세한 내용은 Runtime License를 사용한 ABBYY FineReader Engine 라이브러리 활성화를 참조하세요.
  • 애플리케이션에서 지원할 모듈이 작동하는 데 필요한 파일
  • ABBYY FineReader Engine 배포 키트 섹션의 표에서 “mandatory”로 표시된 파일. 이러한 파일은 시스템 모듈과 주요 인식 데이터베이스입니다.
  • 필요한 경우 손글씨/정자체 텍스트 인식 데이터베이스
  • 애플리케이션에서 사용할 인터페이스 언어용 리소스 파일
  • 애플리케이션에서 지원할 인식 언어용 사전 지원 파일. 인식 언어에 라틴 알파벳을 사용하는 언어가 포함된 경우 Univers.amd 및 Univers.amm 파일을 복사해야 합니다.
  • 애플리케이션이 ABBYY FineReader Engine 인터페이스를 통해 스캔을 수행하는 경우 Windows canning 모듈, 스캔 관련 리소스 및 Twain 모듈
  • 애플리케이션이 ABBYY FineReader Engine Visual Components를 사용하는 경우 Windows Visual Components 모듈 및 해당 리소스. regsvr32.exe를 사용해 VisualComponents_dll을 등록합니다.
FREngineDistribution.csv 파일을 사용해 애플리케이션 작동에 필요한 파일 목록을 자동으로 생성할 수도 있습니다.참조:
아니요, 필요하지 않습니다. 권한이 없는 사용자가 수정하지 못하도록 ‘Everyone’의 전체 액세스를 제한하는 것은 올바른 방법입니다. ‘Everyone’ 그룹에는 ‘Read’ 액세스만 있어도 충분합니다.
다음 폴더에는 전체 제어 권한이 필요합니다.
  • %TEMP% 폴더
  • %ProgramData%\ABBYY\SDK\12\FineReader Engine 폴더
  • %ProgramData%\ABBYY\SDK\12\Licenses 폴더 (라이선스 서버에 필요하며, 워크스테이션에서는 선택 사항)
애플리케이션을 실행하는 모든 사용자는 다음 항목에 대해 읽기 및 실행 권한과 쓰기 권한이 있어야 합니다.
  • %ProgramData%\ABBYY 폴더
다음 레지스트리 분기에는 워크스테이션에서 액세스할 수 있어야 합니다.
  • “HKEY_CURRENT_USER\Software\ABBYY\SDK\12\FineReader Engine” — 전체 제어
  • “HKEY_CURRENT_USER\Software\ABBYY\SDK\12” — 설치 시에만 전체 제어
  • “HKEY_LOCAL_MACHINE\Software\ABBYY\SDK\12” — 설치 시에만 전체 제어
자세한 내용은 ABBYY FineReader Engine 라이브러리 설치를 참조하세요.
애플리케이션을 컴파일할 때 사용한 Customer Project ID와 Runtime License가 일치하는지 확인하세요. 라이선스가 Customer Project ID와 일치하지 않으면 애플리케이션이 작동하지 않습니다.Customer Project ID는 FineReader Engine을 로드하는 메서드에 입력 매개변수 중 하나로 전달됩니다. 메서드에서 사용하는 Customer Project ID가 올바른지 확인하세요.자세한 내용은 Licensing, ABBYY FineReader Engine 라이브러리를 사용하는 애플리케이션 배포를 참조하세요.
다음 명령줄을 사용하여 %ProgramData%\ABBYY\SDK\12\Licenses 폴더에 부여된 권한을 확인하세요.
ls -l /var/lib/ABBYY/SDK/12 | grep Licenses
chmod 777 /var/lib/ABBYY/SDK/12/Licenses
명령줄 결과가 drwxrwxrwx가 아니면 %ProgramData%\ABBYY\SDK\12\Licenses 폴더에 일부 권한이 없는 것입니다.%ProgramData%\ABBYY\SDK\12\Licenses 폴더에 전체 액세스 권한을 부여하려면 다음 명령줄을 실행하세요.
IFRDocument::Process와 같은 처리 메서드를 사용하려면 Processing 모듈이 포함된 라이선스가 필요합니다. 라이선스에서 이를 지원하지 않으면 바코드만 인식할 수 있으므로 IFRPage::ExtractBarcodes 메서드를 사용하세요.
IFRDocument::Process와 같은 처리 메서드를 사용하려면 Processing 모듈이 포함된 라이선스가 필요합니다. 라이선스에서 이를 지원하지 않더라도 다른 메서드를 사용해 바코드 및/또는 체크 마크를 인식할 수 있습니다.
Docker 컨테이너에서 ABBYY FineReader Engine을 실행하려면 ABBYY FineReader Engine과 Licensing Service를 각각 포함하는 별도의 컨테이너 두 개를 사용하세요.이 시나리오에 대한 지침은 Docker 컨테이너 내부에서 ABBYY FineReader Engine 12 실행에서 확인할 수 있습니다.
ABBYY FineReader Engine 기반 애플리케이션은 Azure Cloud Service 또는 Azure App Service에서 실행할 수 있습니다. 자세한 내용은 Azure Services에서 ABBYY FineReader Engine 실행의 지침을 따르세요.
이미지 관련 질문
이미지 품질을 개선하는 ImageDocument 객체의 메서드를 사용하세요. 이러한 메서드를 사용하면 작업할 이미지 영역을 선택할 수 있습니다.
ABBYY FineReader Engine은 이미지 해상도를 보정하는 여러 가지 방법을 제공합니다.
  1. 이미지를 연 후 ImageDocument 객체의 ChangeResolution 메서드를 사용하는 방법입니다.
    최적의 해상도 값을 확인하려면 FRPage 객체의 DetectResolution 메서드를 사용할 수 있습니다.
  2. 이미지 전처리 단계에서 수행하는 방법입니다(기본적으로 이미지를 완전히 처리하는 모든 메서드 호출에는 이 단계가 포함됨). 이 과정은 PagePreprocessingParams 객체의 OverwriteResolutionMode 속성으로 제어됩니다. 해상도는 자동으로 보정하거나 ResolutionToOverwrite 속성에 지정된 값으로 설정할 수 있습니다.
컴퓨터 화면을 캡처해 얻은 이미지에는 텍스트 추출용 설정을 사용하는 것이 좋습니다. Engine 객체의 LoadPredefinedProfile 메서드를 호출하여 미리 정의된 프로필 중 하나를 로드하십시오.
  • TextExtraction_Accuracy — 정확도에 최적화된 문서 텍스트 추출용
  • TextExtraction_Speed — 속도에 최적화된 문서 텍스트 추출용
스크린샷으로 얻은 이미지의 해상도는 72 또는 96 dpi로 설정해야 합니다(화면 해상도에 따라 다름).
이 권장 사항은 컴퓨터에서 실행되는 운영 체제나 소프트웨어를 사용해 생성한 디지털 이미지에 적용됩니다. 추가 장치(예: 카메라)로 촬영한 화면 사진의 해상도는 200~300 dpi여야 합니다.
참고 항목: 프로필 작업.

Engine 객체 사용

초기화에 InitializeEngine 함수를 사용하는 경우, 애플리케이션의 main 함수에 [STAThread] (단일 스레드 아파트먼트 모델) 특성을 지정해야 합니다:
[STAThread]
public static void Main()
{
  ...
}
일부 ABBYY FineReader Engine 객체(예: ILayout::Blocks)에는 읽기 전용 객체 속성이 있습니다. 그렇다고 해서 이러한 속성을 변경할 수 없다는 뜻은 아니며, 직접 변경할 수 없다는 의미일 뿐입니다. C++(Linux에서는 C++ raw)에서 이러한 속성을 변경하려면 속성 객체에 대한 참조를 새 변수에 전달한 다음, 이 변수를 사용해 변경해야 합니다. 아래는 읽기 전용 컬렉션으로 표현되는 ILayout::Blocks 속성에 대한 C++ 예제입니다:
ILayout* pLayout = 0;
ILayoutBlocks* pLayoutBlocks = 0;
int blockIndex = 0;
// 이전에 연 FRPage에서 layout을 가져옵니다
pFRPage->get_Layout( &pLayout );
// pLayoutBlocks 변수는 Layout에서 blocks 컬렉션에 대한 참조를 받습니다
pLayout->get_Blocks( &pLayoutBlocks );
// block 컬렉션에서 요소를 제거합니다
pLayoutBlocks->DeleteAt( blockIndex );
// 수정된 layout으로 작업합니다
...
// 객체를 해제합니다
pLayoutBlocks->Release();
pLayout->Release();
예, 가능합니다. Engine 객체를 생성할 때 InprocLoader 또는 OutprocLoader 객체를 사용해야 합니다. 자세한 내용은 Engine Object를 로드하는 여러 방법을 참조하세요.로드에 InitializeEngine 함수를 사용하는 경우에는 여러 스레드에서 Engine 객체를 사용할 수 없습니다. 이 경우 모든 FineReader Engine 객체의 메서드는 Engine 객체가 생성된 스레드에서만 호출해야 합니다.
예, 가능합니다. 자세한 내용은 Engine Object를 로드하는 여러 방법을 참조하세요.
이 예외는 애플리케이션에서 생성하여 사용한 모든 객체가 Engine 객체를 초기화 해제하기 전에 삭제되지 않은 경우 발생합니다. 모든 객체를 삭제했더라도 가비지 수집기 동작으로 인해 이 예외가 발생할 수 있습니다.
애플리케이션을 Windows 환경에서 Visual Basic .NET으로 개발한 경우: Nothing 값으로 설정된 객체는 삭제되는 것이 아니라 삭제 대상으로만 표시됩니다. 가비지 수집기가 해당 객체를 정확히 언제 삭제할지는 알 수 없습니다. 따라서 가비지 수집기가 객체를 삭제할 수 있도록, Engine 객체를 초기화 해제하기 전에 다음 메서드를 호출해야 합니다.
    GC.Collect()
    GC.WaitForPendingFinalizers()
로그를 사용 중인 경우(Engine 객체의 StartLogging 메서드로 활성화 가능), 이 상황에서 “Warning: DeinitializeEngine() has detected external references to FREngine objects. It can indicate a leak if programming platform without automatic garbage collection is used.” 메시지가 표시될 수도 있습니다. 가비지 수집기(GC.Collect)를 명시적으로 호출하더라도 객체가 항상 즉시 삭제되는 것은 아닙니다. 가비지 수집기가 있는 환경에서 작업하는 경우 이 메시지는 무시해도 됩니다.가비지 수집이 없는 환경(C++ 등)에서 작업하는 경우, 이 예외와 메시지는 소스 코드에 문제가 있음을 나타낼 수 있습니다. 일부 객체가 잘못 처리되어 메모리 누수가 발생할 수 있습니다. 그러나 Engine 초기화 해제 후에는 모든 FineReader Engine 객체가 어쨌든 삭제되므로, 메모리 누수는 코드의 클라이언트 측 부분, 즉 FineReader Engine 객체용 자체 래퍼를 만들고 초기화 해제 전에 이를 해제하지 않은 경우에 발생할 수 있습니다.해제되지 않은 객체 수를 반환하며 메모리 누수를 추적하는 데 도움이 될 수 있는 Engine 객체의 TotalObjectsCount 속성을 사용하는 것도 좋습니다.
이 작업을 수행하려면 Engine 객체의 StartLogging 메서드를 호출해야 합니다. 입력 매개변수로 로그 파일 이름과 메서드 호출 메시지를 로그에 기록할지 여부를 결정하는 Boolean 변수를 지정합니다. 이 메서드를 호출하면 모든 메시지가 로그에 기록됩니다. 로깅을 중지하려면 Engine 객체의 StopLogging 메서드를 호출하세요.
일반적으로 FREngine.dll은 등록할 필요가 없습니다. 이 라이브러리는 Developer 설치 또는 기본 매개변수를 사용하는 Runtime 설치 중에 자동으로 등록됩니다.하지만 어떤 이유로든 설치 후 FREngine.dll을 등록해야 하는 경우(Runtime 설치 중 RegisterCOM=No를 지정한 경우)에는 다음 명령줄을 사용하세요.
regsvr32 /s /n /i:"<path to the Inc folder>" "<path to FREngine.dll>"
기본 인식 언어는 영어입니다. 기본 인식 언어를 변경하려면 RecognizerParams 객체의 SetPredefinedTextLanguage 메서드를 사용해야 합니다.
하나의 블록에 서로 다른 유형의 텍스트가 포함되어 있더라도 ABBYY FineReader Engine은 이를 동일한 유형의 텍스트로 처리합니다. OCR 품질을 높이려면 각 텍스트 유형마다 별도의 블록을 그리십시오.추가 정보는 Using Text Type Autodetection을 참조하십시오.
대상 문서를 인식한 후 XML 형식으로 내보낼 수 있습니다. ABBYY FineReader Engine에서 사용하는 XML schema를 사용하면 처리된 텍스트와 해당 구조, 속성, 인식 후보에 관한 필요한 모든 정보를 얻을 수 있습니다.
RecognizerParams 객체의 TextTypes 속성에 TT_Matrix, TT_Typewriter, TT_OCR_A, TT_OCR_B 중 하나라도 포함된 조합이 있으면, RecognizerParams 객체의 ProhibitItalic, ProhibitSubscript, ProhibitSuperscript 속성 값과 관계없이 기울임꼴 글꼴과 위 첨자/아래 첨자는 인식되지 않습니다.추가 정보는 Using Text Type Autodetection을 참조하십시오.
문자가 신뢰하기 어렵게 인식되어 검토가 필요한지 확인하려면 해당 문자에 대해 PlainText 또는 CharParams 객체의 IsSuspicious 속성을 사용하십시오. 이 값은 ErrorProbability를 기반으로 계산됩니다.더 세밀하게 구분하려면 PlainText 또는 CharParams 객체의 ErrorProbability 속성을 사용할 수 있습니다. 이 속성은 해당 문자가 잘못 인식되었을 것으로 추정되는 확률(0~100 범위)을 반환합니다. 이 값은 해당 문자가 나타나는 문맥, 예를 들어 그 문자가 포함된 단어가 사전에 있는지 여부를 고려합니다.문자 신뢰도도 확인할 수 있습니다. 인식된 문자에 대해서는 PlainText 객체의 CharConfidence 속성을, 모든 인식 후보에 대해서는 CharacterRecognitionVariant 객체의 CharConfidence 속성을 사용할 수 있습니다. 신뢰도는 문맥을 고려하지 않고 단일 문자 이미지에만 기반한 정확도 추정치를 제공합니다. 서로 다른 문자에 대한 신뢰도 추정치는 서로 비교할 수 없으며, 신뢰도를 안전하게 사용할 수 있는 유일한 경우는 동일한 이미지(문자)에 대한 여러 인식 후보를 비교할 때뿐입니다.이러한 속성은 인식 과정을 거치지 않고 얻은 기호(예: 원본 PDF 파일에서 직접 가져온 기호)에는 의미가 없습니다.
RecognizerParams 객체의 SaveCharacterRecognitionVariants 또는 SaveWordRecognitionVariants 속성이 TRUE로 설정되어 있는지 확인하세요. 이 속성은 문자 또는 단어 인식 후보를 저장할지 여부를 지정합니다. 자세한 내용은 Using Voting API를 참조하세요.
운영 체제가 macOS 10.15 Catalina 이상이면 다음 단계를 수행하세요(이 안내에서는 Font Book 애플리케이션을 사용합니다).
  1. 글꼴이 있는 폴더를 찾습니다(원하는 글꼴을 마우스 오른쪽 버튼으로 클릭한 다음 Finder에서 보기 선택).
  2. 찾은 폴더에서 로컬 글꼴을 설치합니다.
  • 애플리케이션 설정(Preferences)을 엽니다.
  • Default install location 속성을 Computer로 설정합니다.
  • 도구 모음에서 ’+’ 버튼을 클릭합니다(또는 File - Add fonts 사용).
  • 1단계에서 찾은 폴더를 선택합니다.
  • ‘Open’ 버튼을 클릭합니다. 글꼴 설치 중에는 사용자 암호를 입력해야 합니다.
또는 1단계의 폴더에서 /Library/Fonts 폴더로 글꼴을 복사할 수도 있습니다.글꼴을 설치할 계획은 없지만 ABBYY FineReader Engine에서 사용하려면 CustomFontSet 객체의 Folder 속성을 설정하세요.
스캔 로그 파일은 scantwain.txt와 scanwia.txt 두 개이며, %userprofile%\AppData\Local\ABBYY\ScanManager\12.00 폴더에 저장됩니다.
현재 Scan은 Windows에서만 구현되어 있습니다.
ScanSource 객체의 ScanSettings 속성을 사용하면 ScanSourceSettings 객체에 액세스할 수 있습니다. 이 객체를 통해 소스의 스캔 설정에 접근할 수 있습니다.자세한 내용은 Scanning 시나리오 설명을 참조하세요.
현재 Scan은 Windows에서만 구현되어 있습니다.
내보내기 시 지원되는 PDF 버전은 PDFVersionEnum에 나열되어 있습니다.버전은 지정된 내보내기 매개변수와 충돌하지 않아야 합니다. 내보내기 매개변수에 맞는 PDF 파일 버전 중 가장 낮은 버전을 선택해야 합니다.
  • 사용할 수 있는 가장 낮은 파일 버전은 1.3입니다.
  • 다음 경우 PDF 파일 버전은 1.4여야 합니다.
    • PDFExportParams 객체의 PDFAComplianceMode 속성이 PCM_Pdfa_1a 또는 PCM_Pdfa_1b인 경우
  • 다음 경우 PDF 파일 버전은 1.4 이상이어야 합니다.
  • 다음 경우 버전은 1.5 이상이어야 합니다.
  • 다음 경우 버전은 1.6 이상이어야 합니다.
    • PDFEncryptionInfo 객체의 EncryptionAlgorithm 속성이 PDFEA_AES128인 경우, 또는
    • 출력 PDF 파일에 OpenType 글꼴이 사용되는 경우
  • 다음 경우 버전은 1.7 이상이어야 합니다.
  • 사용할 수 있는 가장 높은 파일 버전은 2.0입니다.
추가 정보는 PDFExportFeatures를 참조하세요.
글꼴을 어떤 방식으로 사용할지에 따라, 다음 방법 중 하나로 애플리케이션을 실행하기 전에 운영 체제에 글꼴을 등록하거나 애플리케이션에 추가해야 합니다.
  • 글꼴을 ABBYY FineReader Engine 기반 애플리케이션의 Data/Resources/Font 폴더에 수동으로 복사합니다.
  • 글꼴을 /usr/share/fonts 시스템 폴더에 수동으로 복사합니다.
  • 운영 체제에 맞는 글꼴 설치 패키지를 설치합니다.
자세한 내용은 Working with Fonts를 참조하세요.
질문에 대한 답변을 찾지 못한 경우 ABBYY Technical Support에 문의하세요.