Ir para o conteúdo do rodapé
COMPARAR COM OUTROS COMPONENTES

Testes de software OCR: explore as melhores opções

Para que o OCR funcione com o SDK Kofax OmniPage, é necessário entrar em contato com a equipe de vendas da Tungsten Automation, sobreviver a 4 a 12 semanas de reuniões de descoberta, sessões de prova de conceito, negociações de contrato e aprovações de aquisição — antes que uma única linha de código possa ser escrita. O SDK não existe no NuGet. Ele chega como um instalador personalizado, anexa um arquivo de licença a uma máquina específica ou servidor de licença de rede, carrega mais de 100MB de dicionários de idiomas e modelos de rede neural na inicialização e exige uma chamada engine.Shutdown() explícita ou corre o risco de deixar a licença bloqueada para todos os outros processos nesse servidor. Para a maioria das cargas de trabalho de OCR em .NET — faturas, contratos, PDFs digitalizados, documentos de identidade — esse custo adicional de aquisição e implantação não oferece nenhuma vantagem mensurável em termos de precisão em comparação com uma biblioteca que você pode instalar em 30 segundos.

Entendendo o Kofax OmniPage

O Kofax OmniPage (agora comercializado sob a marca Tungsten Automation após uma reformulação da marca em 2024) é um Suite Enterprise de captura de documentos e OCR com 30 anos de história. Sua cadeia de propriedade é a seguinte: Caere Corporation → Nuance Communications (2001) → Kofax (2019) → Tungsten Automation (2024). Esse histórico de propriedade é importante para as equipes que avaliam a estabilidade da plataforma a longo prazo.

A OmniPage se posiciona no nível de precisão premium e tem como alvo o processamento de documentos Enterprise de alto volume: centros de processamento de formulários que processam milhões de páginas, programas de digitalização de documentos governamentais e fluxos de trabalho financeiros que exigem ICR (Reconhecimento Inteligente de Caracteres) para campos manuscritos. O SDK de captura, que expõe a funcionalidade de OCR para desenvolvedores .NET , é diferente do produto OmniPage Ultimate para desktop (preço de varejo: US$ 499). O SDK exige uma aquisição separada e possui preços para empresas — entre em contato com Kofax/Tungsten Automation para uma cotação. Taxas anuais de manutenção são exigidas além do custo da licença.

Principais características arquitetônicas do SDK de captura OmniPage:

  • Sem distribuição NuGet : SDK entregue via instalador personalizado após a conclusão da venda; Referências de DLL adicionadas manualmente aos projetos
  • Gerenciamento do ciclo de vida do motor: OmniPageEngine deve ser inicializado antes do uso e fechado explicitamente após; a falha em chamar Shutdown() pode deixar a licença bloqueada
  • Implantação de arquivo de licença: Um arquivo .lic deve existir em um caminho específico em cada máquina que executa o SDK; As configurações de licença de rede/flutuante exigem a instalação de um servidor de licenças separado com portas de firewall abertas.
  • Identificação por hardware: a ativação está vinculada ao hardware; A reativação é necessária em caso de alterações de hardware.
  • Instalação nativa com múltiplos componentes: DLLs do mecanismo OCR, módulos de escrita à mão ICR, módulos de reconhecimento de marcas OMR e mais de 120 dicionários de idiomas são carregados na inicialização do mecanismo.
  • Múltiplos formatos de saída e modos de reconhecimento: Suporta reconhecimento de OCR, ICR (escrita à mão), OMR (caixas de seleção), código de barras e MRZ; Cada modo é configurável por zona e por documento.
  • Linux adicionado na versão 2025.3: A versão do SDK de janeiro de 2026 adicionou suporte para servidores Linux; OmacOScontinua sem suporte.

Padrão de inicialização do motor

Toda integração do OmniPage começa com um ciclo de vida do mecanismo que abrange toda a janela de processamento de documentos do aplicativo:

// OmniPage: Engine must be initialized before any operations
// License file must exist at this path on every target machine
using var engine = new OmniPageEngine();
engine.SetLicenseFile(@"C:\Program Files\OmniPage\license.lic");
engine.Initialize();  // Contacts license server; loads 100MB+ of native components

// Configure recognition settings for the document
var settings = new RecognitionSettings
{
    PrimaryLanguage = "English",
    SecondaryLanguages = new[] { "German", "French" },
    AccuracyMode = "Maximum",
    PreserveLayout = true,
    DetectTables = true,
    DespeckleLevel = 2,
    ContrastEnhancement = true,
    AutoRotate = true,
    DeskewImage = true
};

// Document-centric workflow
var document = engine.CreateDocument();
document.AddPage(imagePath);
document.Recognize(settings);
string text = document.GetText();

// Explicit cleanup — omitting this can lock the license
document.Dispose();
engine.Shutdown();
// OmniPage: Engine must be initialized before any operations
// License file must exist at this path on every target machine
using var engine = new OmniPageEngine();
engine.SetLicenseFile(@"C:\Program Files\OmniPage\license.lic");
engine.Initialize();  // Contacts license server; loads 100MB+ of native components

// Configure recognition settings for the document
var settings = new RecognitionSettings
{
    PrimaryLanguage = "English",
    SecondaryLanguages = new[] { "German", "French" },
    AccuracyMode = "Maximum",
    PreserveLayout = true,
    DetectTables = true,
    DespeckleLevel = 2,
    ContrastEnhancement = true,
    AutoRotate = true,
    DeskewImage = true
};

// Document-centric workflow
var document = engine.CreateDocument();
document.AddPage(imagePath);
document.Recognize(settings);
string text = document.GetText();

// Explicit cleanup — omitting this can lock the license
document.Dispose();
engine.Shutdown();
Imports OmniPage

' OmniPage: Engine must be initialized before any operations
' License file must exist at this path on every target machine
Using engine As New OmniPageEngine()
    engine.SetLicenseFile("C:\Program Files\OmniPage\license.lic")
    engine.Initialize()  ' Contacts license server; loads 100MB+ of native components

    ' Configure recognition settings for the document
    Dim settings As New RecognitionSettings With {
        .PrimaryLanguage = "English",
        .SecondaryLanguages = {"German", "French"},
        .AccuracyMode = "Maximum",
        .PreserveLayout = True,
        .DetectTables = True,
        .DespeckleLevel = 2,
        .ContrastEnhancement = True,
        .AutoRotate = True,
        .DeskewImage = True
    }

    ' Document-centric workflow
    Dim document = engine.CreateDocument()
    document.AddPage(imagePath)
    document.Recognize(settings)
    Dim text As String = document.GetText()

    ' Explicit cleanup — omitting this can lock the license
    document.Dispose()
    engine.Shutdown()
End Using
$vbLabelText   $csharpLabel

Esse padrão deve ser reproduzido para cada ponto de integração: manipuladores de requisições ASP.NET , serviços do Windows, trabalhos de processamento em lote e testes unitários, todos precisam gerenciar o ciclo de vida do mecanismo. Em uma configuração de licença flutuante, esquecer Shutdown() em um caminho de erro bloqueia um assento de licença para todos os outros processos até que o servidor reinicie.

Entendendo o IronOCR

IronOCR é uma biblioteca OCR comercial para .NET, construída sobre um mecanismo Tesseract 5 otimizado, com pré-processamento automático, suporte nativo a PDF e implantação multiplataforma a partir de um único pacote NuGet . É voltado para desenvolvedores que precisam de OCR pronto para produção sem os custos adicionais de aquisição Enterprise ou os fluxos de trabalho de pré-processamento manual exigidos pelo Tesseract puro.

Principais características:

  • Pacote único NuGet: dotnet add package IronOcr — sem instalador, sem referências DLL, sem gerenciamento de componentes nativos Licenciamento baseado em string: uma única linha na inicialização do aplicativo; sem arquivos para implantar, sem servidores de licença para configurar, sem necessidade de identificação de hardware.
  • Pré-processamento automático: correção de distorção, redução de ruído, aprimoramento de contraste, binarização e normalização de resolução aplicados automaticamente antes da ativação do mecanismo OCR.
  • Entrada PDF nativa: input.LoadPdf() lida diretamente com PDFs digitalizados; Não é necessária nenhuma licença separada para o módulo PDF.
  • Saída de PDF pesquisável: result.SaveAsSearchablePdf() produz um PDF de camada de texto a partir de qualquer entrada digitalizada
  • Seguro por design: Múltiplas instâncias IronTesseract executam em paralelo sem sobrecarga de coordenação
  • Multiplataforma: Windows, Linux, macOS, Docker, Azure e AWS Lambda, todos suportados a partir do mesmo pacote NuGet.
  • 125+ idiomas: Cada idioma disponível como um pacote NuGet separado (IronOcr.Languages.French, etc.)
  • Licenciamento perpétuo: $999 Lite / $1,499 Plus / $2,999 Professional / $5,999 Unlimited; Não requer manutenção anual.

Comparação de recursos

Recurso SDK Kofax OmniPage IronOCR
Distribuição Instalador personalizado, referências manuais de DLL Pacote NuGet
Tempo de instalação 4 a 12 semanas (aquisição) + horas (configuração) 30 segundos
Preço inicial Entre em contato com as vendas da Kofax/Tungsten Automation $999 Lite (publicado)
Modelo de licença Acordo Enterprise , manutenção anual Perpétuo, sem necessidade de manutenção.
Mecanismo de licenciamento .lic arquivo + servidor de licença opcional Chave de string ou variável de ambiente
Suporte para macOS Não suportado Suporte total
Suporte para Linux Sim (adicionado em 2025.3) Sim (todas as versões)

Comparação Detalhada de Recursos

Recurso SDK Kofax OmniPage IronOCR
Aquisição
Disponibilidade do NuGet Não Sim
Teste de autoatendimento Não (avaliação condicionada à venda) Sim (teste gratuito disponível)
Preço publicado Não Sim
Processo de vendas necessário Sim (normalmente entre 4 e 12 semanas) Não
Licenciamento
Mecanismo de licenciamento .lic arquivo no disco Chave de string
Suporte ao servidor de licenças Sim (flutuante/rede) Não é necessário
Identificação de hardware Sim Não
Taxas de manutenção anuais 18–25% do custo da licença Opcional
Taxas de tempo de execução por página Disponível (variável) Não
Suporte da plataforma
Windows x64 Sim Sim
Linux Sim (2025.3+) Sim (todas as versões)
macOS Não Sim
Docker Limitado Completo
Azure / AWS Lambda Complexo Direto
recursos de OCR
OCR (texto impresso) Sim, mais de 120 idiomas. Sim, mais de 125 idiomas.
ICR (escrita à mão) Sim Limitado
OMR (caixas de seleção/bolhas) Sim Não
reconhecimento MRZ Sim Sim
MICR (cheques bancários) Sim Sim
Leitura de código de barras Módulo adicional Embutido
Entrada de documento
Arquivos de imagem Sim Sim
Entrada de PDF (nativa) Sim (pode exigir módulo adicional) Sim, integrado.
PDFs protegidos por senha Dependente da configuração Sim (Password parâmetro)
TIFF de várias páginas Sim Sim
Entrada de fluxo Sim Sim
Saída
Texto simples Sim Sim
PDF pesquisável Sim Sim
hOCR Sim Sim
Coordenadas ao nível da palavra Sim Sim
Pontuações de confiança Sim Sim
Pré-processamento
Desvio automático Com base em configurações API automática + explícita
Redução de ruído Com base em configurações API automática + explícita
Aprimoramento de contraste Com base em configurações API automática + explícita
Controle de filtro explícito Sim Sim (Deskew(), DeNoise(), etc.)
Desenvolvimento
Gestão do ciclo de vida do motor Obrigatório Não é necessário
Segurança da rosca Complexo (reutilização de motor) Embutido
Complexidade de implantação Alta (arquivos de licença, componentes nativos) Pacote NuGet único

Aquisições Enterprise versus acessibilidade para desenvolvedores

A diferença prática mais significativa entre o OmniPage e o IronOCR não é a precisão, mas sim o tempo entre "Preciso de OCR" e "O OCR está sendo executado no meu aplicativo".

Abordagem Kofax OmniPage

O processo de aquisição da OmniPage segue uma sequência fixa que nenhum desenvolvedor pode burlar:

Etapas de implantação do OmniPage (a partir do código-fonte kofax-enterprise-ocr.cs):

1. Processo de vendas completo (4 a 12 semanas)
2. Receba o instalador do SDK da Tungsten.
3. Instale o SDK nas máquinas de desenvolvimento.
4. Configurar arquivos de licença (por máquina ou flutuantes)
5. Configure o servidor de licenças (se estiver usando licenciamento de rede)
6. Instalar componentes de tempo de execução em servidores de produção
7. Implante os arquivos de licença em produção.
8. Configure o firewall para comunicação com o servidor de licenças.
9. Configure o monitoramento da disponibilidade de licenças.
10. Documentar os procedimentos de encerramento para liberação de licença.

As etapas 5, 8 e 9 não são tarefas de desenvolvimento — elas exigem coordenação com as equipes de infraestrutura e segurança. O passo 7 significa que cada implantação de produção precisa do arquivo .lic presente em um caminho codificado. O passo 10 existe porque esquecer Shutdown() em qualquer caminho de código bloqueia um assento de licença flutuante indefinidamente.

O modelo de licenciamento por página adiciona mais uma camada de complexidade operacional. Os relatórios de utilização são enviados para um servidor de licenças, a conciliação de faturas ocorre mensalmente ou trimestralmente, e qualquer pico inesperado no volume de documentos (um novo cliente integrado, um backlog processado) gera uma fatura excedente que ninguém havia previsto no orçamento.

Abordagem IronOCR

// Step 1: Install
// dotnet add package IronOcr

// Step 2: Configure license (one line at startup)
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

// Step 3: Read a document
var text = new IronTesseract().Read("document.jpg").Text;
// Step 1: Install
// dotnet add package IronOcr

// Step 2: Configure license (one line at startup)
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

// Step 3: Read a document
var text = new IronTesseract().Read("document.jpg").Text;
' Step 1: Install
' dotnet add package IronOcr

' Step 2: Configure license (one line at startup)
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"

' Step 3: Read a document
Dim text As String = (New IronTesseract()).Read("document.jpg").Text
$vbLabelText   $csharpLabel

Sem instalador. Nenhuma referência a DLL. Não há arquivo de licença no disco. Sem servidor de licenças. Sem regras de firewall. Não há procedimento de desligamento. A chave de licença é uma string — armazene-a em uma variável de ambiente, appsettings.json, ou Azure Key Vault. Alterar os destinos de implantação (de uma máquina virtual Windows para um contêinerDockerLinux, por exemplo) não requer nenhuma reconfiguração de licença.

O guia de configuração do IronTesseract abrange todas as opções de configuração, incluindo a injeção de chaves baseada em variáveis ​​de ambiente, que remove completamente as strings de licença do código-fonte.

Instalação do SDK vs. NuGet

O modelo de implantação determina se os pipelines de CI/CD, os contêineresDockere as funções em nuvem funcionam — e não apenas o quão difícil é configurá-los.

Abordagem Kofax OmniPage

O modelo de distribuição baseado em instalador do OmniPage cria atritos em cada estágio de um pipeline de implantação moderno. Construir um contêinerDockerrequer que o instalador SDK personalizado seja executado dentro da imagem, o arquivo de licença incorporado ou montado em tempo de execução, e engine.Shutdown() para executar antes que o contêiner pare. Uma reinicialização de um pod do Kubernetes que não desliga corretamente o mecanismo do OmniPage pode deixar as licenças flutuantes bloqueadas até que o tempo limite de verificação do servidor de licenças expire (normalmente de 30 a 60 minutos).

Em pipelines de CI/CD, todo agente que executa testes de integração precisa ter o SDK instalado e um arquivo de licença válido disponível. O paralelismo de testes é limitado pelo número de licenças concedidas. Não modelo por página da OmniPage, as execuções de testes automatizados consomem páginas faturáveis.

O namespace Kofax.OmniPage.CSDK é referenciado por meio de caminhos DLL adicionados manualmente, não por um gerenciador de pacotes. Atualizar para uma nova versão do SDK significa reexecutar o instalador em cada máquina de desenvolvimento, agente de compilação e servidor de produção — não incrementar um número de versão em um arquivo .csproj.

Abordagem IronOCR


<PackageReference Include="IronOcr" Version="2024.x.x" />

<PackageReference Include="IronOcr" Version="2024.x.x" />
XML
# Docker: no installer, no license file mount required
FROM mcr.microsoft.com/dotnet/aspnet:8.0
RUN apt-get update && apt-get install -y libgdiplus
COPY --from=build /app/publish /app
WORKDIR /app
ENTRYPOINT ["dotnet", "YourApp.dll"]

O guia de implantação Docker cobre a única dependênciaLinux(libgdiplus para renderização de imagens) e nada mais. O mesmo pacote NuGet funciona no Linux , AWS Lambda e Azure App Service sem necessidade de configuração específica da plataforma. Os pipelines CI/CD restauram o pacote via dotnet restore da mesma forma que restaura qualquer outra dependência — sem etapas de instalador, sem gerenciamento de arquivos de licença, sem restrições de contagem de assentos em paralelismo de teste.

Servidor de licenças vs. chave de cadeia de caracteres

A arquitetura de licenciamento determina o risco operacional às 3 da manhã, quando algo dá errado em produção.

Abordagem Kofax OmniPage

A sequência de validação de licença do OmniPage cria vários modos de falha que não têm nada a ver com OCR:

// OmniPage: License validation at engine startup
// Each of these can fail independently
public static void InitializeWithLicense(string licensePath)
{
    // Failure mode 1: File missing (deployment error, path misconfiguration)
    if (!File.Exists(licensePath))
        throw new LicenseException("License file not found");

    // Failure mode 2: File permissions (service account lacks read access)
    try { using var stream = File.OpenRead(licensePath); }
    catch (UnauthorizedAccessException)
    {
        throw new LicenseException("Cannot read license file — check permissions");
    }

    // Failure mode 3: License server unreachable (network partition, server restart)
    var engine = new OmniPageEngine();
    engine.SetLicenseFile(licensePath);

    try
    {
        engine.Initialize(); // Network call to license server
    }
    catch (LicenseValidationException ex)
    {
        // Could be: expired, invalid hardware, concurrent seat limit exceeded,
        // license server unreachable, or maintenance window
        throw new LicenseException($"License validation failed: {ex.Message}");
    }
}
// OmniPage: License validation at engine startup
// Each of these can fail independently
public static void InitializeWithLicense(string licensePath)
{
    // Failure mode 1: File missing (deployment error, path misconfiguration)
    if (!File.Exists(licensePath))
        throw new LicenseException("License file not found");

    // Failure mode 2: File permissions (service account lacks read access)
    try { using var stream = File.OpenRead(licensePath); }
    catch (UnauthorizedAccessException)
    {
        throw new LicenseException("Cannot read license file — check permissions");
    }

    // Failure mode 3: License server unreachable (network partition, server restart)
    var engine = new OmniPageEngine();
    engine.SetLicenseFile(licensePath);

    try
    {
        engine.Initialize(); // Network call to license server
    }
    catch (LicenseValidationException ex)
    {
        // Could be: expired, invalid hardware, concurrent seat limit exceeded,
        // license server unreachable, or maintenance window
        throw new LicenseException($"License validation failed: {ex.Message}");
    }
}
Imports System.IO

' OmniPage: License validation at engine startup
' Each of these can fail independently
Public Shared Sub InitializeWithLicense(licensePath As String)
    ' Failure mode 1: File missing (deployment error, path misconfiguration)
    If Not File.Exists(licensePath) Then
        Throw New LicenseException("License file not found")
    End If

    ' Failure mode 2: File permissions (service account lacks read access)
    Try
        Using stream = File.OpenRead(licensePath)
        End Using
    Catch ex As UnauthorizedAccessException
        Throw New LicenseException("Cannot read license file — check permissions")
    End Try

    ' Failure mode 3: License server unreachable (network partition, server restart)
    Dim engine As New OmniPageEngine()
    engine.SetLicenseFile(licensePath)

    Try
        engine.Initialize() ' Network call to license server
    Catch ex As LicenseValidationException
        ' Could be: expired, invalid hardware, concurrent seat limit exceeded,
        ' license server unreachable, or maintenance window
        Throw New LicenseException($"License validation failed: {ex.Message}")
    End Try
End Sub
$vbLabelText   $csharpLabel

Uma partição de rede entre um servidor de aplicações e o servidor de licença falha em toda chamada engine.Initialize() até que a partição seja resolvida, independentemente de a licença ter sido previamente validada naquela máquina. O licenciamento por página adiciona um quarto modo de falha: cota de páginas esgotada no meio de um lote.

Abordagem IronOCR

// One line at application startup
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

// Optional: verify license status
bool isLicensed = IronOcr.License.IsLicensed;

// Works offline — no license server, no network calls at runtime
var text = new IronTesseract().Read("document.jpg").Text;
// One line at application startup
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

// Optional: verify license status
bool isLicensed = IronOcr.License.IsLicensed;

// Works offline — no license server, no network calls at runtime
var text = new IronTesseract().Read("document.jpg").Text;
Imports IronOcr

' One line at application startup
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"

' Optional: verify license status
Dim isLicensed As Boolean = IronOcr.License.IsLicensed

' Works offline — no license server, no network calls at runtime
Dim text As String = New IronTesseract().Read("document.jpg").Text
$vbLabelText   $csharpLabel

O IronOCR valida a chave de licença localmente. Nenhuma chamada de rede ocorre durante as operações de OCR. Um servidor de produção que perde o acesso à internet após a inicialização continua processando documentos sem interrupção. A página de licenciamento cobre todos os níveis: $999 Lite para uso de um único desenvolvedor em um único projeto até $5,999 Unlimited para equipes sem restrições de desenvolvedores ou projetos.

A chave pode vir de uma variável de ambiente (IRONOCR_LICENSE_KEY) sem mudanças no código, tornando simples o uso de chaves diferentes entre desenvolvimento, teste e produção sem modificar os binários implantados.

Estabilidade do roteiro

Um histórico de quatro mudanças de proprietário é um fator de risco de aquisição que as equipes de infraestrutura e segurança questionam, e os desenvolvedores devem ter uma resposta honesta preparada.

Abordagem Kofax OmniPage

A cadeia de propriedade da OmniPage desde 2001: Caere → Nuance → Kofax → Tungsten Automation. Cada aquisição introduziu um período de transição em que os URLs da documentação deixaram de funcionar, os canais de suporte mudaram, as redes de parceiros foram reestruturadas e os contratos de licença Enterprise precisaram ser renegociados sob novos termos. O lançamento do OmniPage Capture SDK 2025.3 em janeiro de 2026 (que adicionou suporte para Linux) confirma o desenvolvimento ativo, mas a mudança de marca para Tungsten Automation tem menos de dois anos e a documentação do roteiro do produto constava como "em revisão" durante essa transição.

Para equipes que adquirem contratos Enterprise de 3 a 5 anos, a questão não é se o OmniPage funciona hoje — ele funciona —, mas sim se as prioridades estratégicas da Tungsten Automation em 2028 estão alinhadas com o roadmap atual do produto. Aquisições de software Enterprise frequentemente resultam em status de modo de manutenção para os produtos adquiridos quando as prioridades do roadmap da empresa adquirente Shift para seus próprios componentes de plataforma.

A migração da documentação por si só cria atrito operacional: os tickets de suporte da era Kofax, os favoritos da documentação e as postagens em fóruns da comunidade que fazem referência a estruturas de URL antigas não são mais resolvidos corretamente, o que aumenta o atrito na experiência de suporte justamente no momento em que os desenvolvedores mais precisam de ajuda (durante incidentes e integrações complexas).

Abordagem IronOCR

A Iron Software é uma empresa focada em ferramentas de desenvolvimento cuja linha de produtos é inteiramente composta por bibliotecas .NET. IronOCR, IronPDF, IronBarcode e produtos relacionados são o negócio principal da empresa — não um produto adquirido sendo absorvido por uma plataforma de automação Enterprise maior. O histórico de versões mostra atualizações consistentes alinhadas com o ciclo de lançamentos do .NET (com suporte para .NET 8, .NET 9 e visando a compatibilidade com .NET 10). A central de documentação e os tutoriais são mantidos em URLs estáveis ​​com conteúdo específico para cada versão.

Referência de Mapeamento de API

Conceito Kofax OmniPage Equivalente de IronOCR
using Kofax.OmniPage.CSDK; using IronOcr;
OmniPageEngine Não é necessário (sem ciclo de vida do motor)
engine.SetLicenseFile(path) IronOcr.License.LicenseKey = "key";
engine.Initialize() Não é necessário
engine.Shutdown() Não é necessário
engine.CreateDocument() new OcrInput()
document.AddPage(imagePath) input.LoadImage(imagePath)
engine.OpenPDF(pdfPath) input.LoadPdf(pdfPath)
document.Recognize(settings) new IronTesseract().Read(input)
document.GetText() result.Text
document.Dispose() using var input = new OcrInput() (automático)
engine.LoadLanguageDictionary("German") dotnet add package IronOcr.Languages.German
settings.PrimaryLanguage = "English" ocr.Language = OcrLanguage.English;
settings.SecondaryLanguages = new[] { "German" } ocr.AddSecondaryLanguage(OcrLanguage.German);
settings.AccuracyMode = "Maximum" input.EnhanceResolution(300); + filtros de pré-processamento
settings.DeskewImage = true input.Deskew();
settings.ContrastEnhancement = true input.Contrast();
settings.DespeckleLevel = 2 input.DeNoise();
pdfDocument.SaveAs(path, outputSettings) result.SaveAsSearchablePdf(path)
Contagem de licenças por página Não aplicável (sem taxas por página)
.lic arquivo no disco Não aplicável
Configuração da porta do servidor de licenças Não aplicável

Quando as equipes consideram migrar do Kofax OmniPage para o IronOCR

O teto orçamentário é atingido.

Uma equipe Enterprise que utiliza o OmniPage para processamento de contratos atinge um limite natural quando o volume de documentos aumenta e os custos de licenciamento por página acompanham esse crescimento. As taxas de uso acumulam-se anualmente além da licença do SDK e manutenção. O caso de negócio para uma licença Professional do IronOCR$2,999 torna-se simples: a licença perpétua se paga rapidamente em comparação a taxas contínuas por página. As equipes nessa posição normalmente executam uma validação de precisão paralela em 1.000 documentos representativos, descobrem que a diferença de precisão entre o OmniPage e o IronOCR é inferior a 1% em seu conteúdo padrão de faturas e contratos e concluem a migração em menos de duas semanas.

O cronograma de aquisição bloqueia a entrega do produto.

Uma startup ou empresa de médio porte que está desenvolvendo um recurso de digitalização de documentos descobre que o fornecedor de OCR, que exige de 4 a 12 semanas de contato com a equipe de vendas, não conseguirá lançar o produto na data prevista. O gerente de produto não tem 8 semanas para o processo de aquisição. O IronOCR instala-se a partir do NuGet em 30 segundos; A chave de licença pode ser obtida facilmente na página do produto IronOCR . O recurso é enviado automaticamente. Esse cenário não é hipotético — é o motivo mais comum que as equipes de desenvolvimento documentam quando explicam suas escolhas tecnológicas à liderança de engenharia posteriormente.

Alterações na topologia de implantação

Uma equipe que utiliza o OmniPage em servidores Windows decide migrar para uma implantação em contêineres no Kubernetes. O instalador do SDK OmniPage não se encaixa perfeitamente em um pipeline de construção do Docker; o arquivo de licença precisa ser montado ou incorporado à imagem (ambos têm implicações de segurança), e as reinicializações do contêiner exigem o gerenciamento adequado do ciclo de vida de desligamento/inicialização do mecanismo. A expansão horizontal para 10 contêineres requer 10 licenças flutuantes ou 10 licenças vinculadas a nós. O modelo de implantação NuGet do IronOCR, as chaves de licença baseadas em variáveis ​​de ambiente e a validação de licença offline tornam a implantação em contêineres simples e direta. A documentação de implantação do Docker abrange toda a configuração, e o escalonamento horizontal não requer ações de licenciamento adicionais — a licença Ilimitada cobre implantações ilimitadas.

O requisito ICR desaparece.

Muitas equipes adotam o OmniPage inicialmente porque um requisito de uma parte interessada listou o "reconhecimento de escrita à mão" como um recurso. Quando esse requisito é analisado em detalhes — e a necessidade real acaba sendo a de formulários impressos com caixas de seleção, e não campos manuscritos de formato livre — a justificativa do ICR para o preço Enterprise desaparece. O IronOCR realiza a detecção de caixas de seleção por meio de suas funcionalidades semelhantes à OMR e extração de dados estruturados a um custo muito menor. Equipes que reavaliam seu acervo de documentos frequentemente descobrem que mais de 95% do volume consiste em PDFs impressos e faturas digitalizadas, onde a vantagem do ICR da OmniPage nunca é utilizada.

A incerteza na aquisição de tungstênio desencadeia uma revisão de riscos.

As equipes de compras Enterprise realizam avaliações periódicas de risco de fornecedores. Quando um fornecedor de ferramentas muda de proprietário quatro vezes em 25 anos, a reformulação da marca mais recente tem menos de dois anos e a documentação do roteiro do produto foi marcada como "em revisão" durante a transição, algumas equipes optam por reduzir o risco de concentração de fornecedores, transferindo a carga de trabalho para um fornecedor de ferramentas de desenvolvimento estável e focado. Essa é uma decisão tanto de negócios quanto técnica — a precisão do OCR da IronOCR em documentos comerciais padrão é competitiva com a da OmniPage, e a migração elimina a discussão sobre a renovação do contrato Enterprise do ciclo orçamentário anual.

Considerações Comuns de Migração

Ciclo de vida do motor para chamadas sem estado

As integrações do OmniPage são construídas em torno de uma instância OmniPageEngine de longa duração que deve ser inicializada na inicialização e encerrada na saída do processo.IronOCR não possui um ciclo de vida equivalente. A classe IronTesseract é instanciada por chamada ou compartilhada como um serviço de longa duração — ambos os padrões funcionam.

// OmniPage pattern: service class with engine lifecycle
public class KofaxDocumentService : IDisposable
{
    private OmniPageEngine _engine;

    public KofaxDocumentService(string licensePath)
    {
        _engine = new OmniPageEngine();
        _engine.SetLicenseFile(licensePath);
        _engine.Initialize();
    }

    public string ProcessDocument(string imagePath)
    {
        var document = _engine.CreateDocument();
        document.AddPage(imagePath);
        document.Recognize(new RecognitionSettings { Language = "English" });
        string text = document.GetText();
        document.Dispose();  // Must not be forgotten
        return text;
    }

    public void Dispose()
    {
        _engine.Shutdown();  // Must not be forgotten
    }
}

//IronOCR equivalent: no lifecycle management needed
public class IronOcrDocumentService
{
    private readonly IronTesseract _ocr;

    public IronOcrDocumentService()
    {
        _ocr = new IronTesseract();
        _ocr.Language = OcrLanguage.English;
    }

    public string ProcessDocument(string imagePath)
    {
        using var input = new OcrInput();
        input.LoadImage(imagePath);
        return _ocr.Read(input).Text;
    }
    // Não Dispose — no unmanaged resources to release
}
// OmniPage pattern: service class with engine lifecycle
public class KofaxDocumentService : IDisposable
{
    private OmniPageEngine _engine;

    public KofaxDocumentService(string licensePath)
    {
        _engine = new OmniPageEngine();
        _engine.SetLicenseFile(licensePath);
        _engine.Initialize();
    }

    public string ProcessDocument(string imagePath)
    {
        var document = _engine.CreateDocument();
        document.AddPage(imagePath);
        document.Recognize(new RecognitionSettings { Language = "English" });
        string text = document.GetText();
        document.Dispose();  // Must not be forgotten
        return text;
    }

    public void Dispose()
    {
        _engine.Shutdown();  // Must not be forgotten
    }
}

//IronOCR equivalent: no lifecycle management needed
public class IronOcrDocumentService
{
    private readonly IronTesseract _ocr;

    public IronOcrDocumentService()
    {
        _ocr = new IronTesseract();
        _ocr.Language = OcrLanguage.English;
    }

    public string ProcessDocument(string imagePath)
    {
        using var input = new OcrInput();
        input.LoadImage(imagePath);
        return _ocr.Read(input).Text;
    }
    // Não Dispose — no unmanaged resources to release
}
Imports System

' OmniPage pattern: service class with engine lifecycle
Public Class KofaxDocumentService
    Implements IDisposable

    Private _engine As OmniPageEngine

    Public Sub New(licensePath As String)
        _engine = New OmniPageEngine()
        _engine.SetLicenseFile(licensePath)
        _engine.Initialize()
    End Sub

    Public Function ProcessDocument(imagePath As String) As String
        Dim document = _engine.CreateDocument()
        document.AddPage(imagePath)
        document.Recognize(New RecognitionSettings With {.Language = "English"})
        Dim text As String = document.GetText()
        document.Dispose()  ' Must not be forgotten
        Return text
    End Function

    Public Sub Dispose() Implements IDisposable.Dispose
        _engine.Shutdown()  ' Must not be forgotten
    End Sub
End Class

' IronOCR equivalent: no lifecycle management needed
Public Class IronOcrDocumentService

    Private ReadOnly _ocr As IronTesseract

    Public Sub New()
        _ocr = New IronTesseract()
        _ocr.Language = OcrLanguage.English
    End Sub

    Public Function ProcessDocument(imagePath As String) As String
        Using input As New OcrInput()
            input.LoadImage(imagePath)
            Return _ocr.Read(input).Text
        End Using
    End Function
    ' Não Dispose — no unmanaged resources to release
End Class
$vbLabelText   $csharpLabel

O padrão using var input = new OcrInput() lida com a limpeza de recursos para os dados de entrada. A própria instância IronTesseract não carrega estado não gerenciado que precisa ser encerrado explicitamente.

Processamento de PDF sem licenciamento de módulo separado

O processamento de PDFs no OmniPage normalmente requer uma configuração específica de formato de saída e, dependendo da edição do SDK, uma licença separada para o módulo PDF. O suporte para entrada de PDFs do IronOCR já está integrado ao pacote NuGet básico. PDFs digitalizados, PDFs nativos e PDFs protegidos por senha utilizam a mesma interface de API.

// Extract text from a scanned PDF — no extra module or license
using var input = new OcrInput();
input.LoadPdf("scanned-contract.pdf");
var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);

// Create a searchable PDF from a scanned-only PDF
result.SaveAsSearchablePdf("contract-searchable.pdf");

// Process specific pages from a large PDF
using var input = new OcrInput();
input.LoadPdfPages("large-report.pdf", 1, 10);  // Pages 1–10 only
var result = new IronTesseract().Read(input);
// Extract text from a scanned PDF — no extra module or license
using var input = new OcrInput();
input.LoadPdf("scanned-contract.pdf");
var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);

// Create a searchable PDF from a scanned-only PDF
result.SaveAsSearchablePdf("contract-searchable.pdf");

// Process specific pages from a large PDF
using var input = new OcrInput();
input.LoadPdfPages("large-report.pdf", 1, 10);  // Pages 1–10 only
var result = new IronTesseract().Read(input);
Imports IronOcr

' Extract text from a scanned PDF — no extra module or license
Using input As New OcrInput()
    input.LoadPdf("scanned-contract.pdf")
    Dim result = New IronTesseract().Read(input)
    Console.WriteLine(result.Text)
End Using

' Create a searchable PDF from a scanned-only PDF
result.SaveAsSearchablePdf("contract-searchable.pdf")

' Process specific pages from a large PDF
Using input As New OcrInput()
    input.LoadPdfPages("large-report.pdf", 1, 10)  ' Pages 1–10 only
    Dim result = New IronTesseract().Read(input)
End Using
$vbLabelText   $csharpLabel

O guia de saída de PDF pesquisável aborda a incorporação da camada de texto que torna os PDFs digitalizados indexáveis ​​em sistemas de gerenciamento de documentos — um requisito comum nos mesmos fluxos de trabalho em que o OmniPage é implementado.

Distribuição do Pacote de Idiomas

Os dicionários de idiomas do OmniPage fazem parte da instalação do SDK e são carregados na inicialização do mecanismo, independentemente de o documento atual precisar deles ou não. Os pacotes de idiomas do IronOCR são pacotes NuGet separados; Somente os idiomas instalados e referenciados são carregados.

// Add language packs as NuGet packages, not installer components
// dotnet add package IronOcr.Languages.German
// dotnet add package IronOcr.Languages.French

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
ocr.AddSecondaryLanguage(OcrLanguage.German);
ocr.AddSecondaryLanguage(OcrLanguage.French);

using var input = new OcrInput();
input.LoadImage("multilingual-document.jpg");
var result = ocr.Read(input);
// Add language packs as NuGet packages, not installer components
// dotnet add package IronOcr.Languages.German
// dotnet add package IronOcr.Languages.French

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
ocr.AddSecondaryLanguage(OcrLanguage.German);
ocr.AddSecondaryLanguage(OcrLanguage.French);

using var input = new OcrInput();
input.LoadImage("multilingual-document.jpg");
var result = ocr.Read(input);
Imports IronOcr

' Add language packs as NuGet packages, not installer components
' dotnet add package IronOcr.Languages.German
' dotnet add package IronOcr.Languages.French

Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English
ocr.AddSecondaryLanguage(OcrLanguage.German)
ocr.AddSecondaryLanguage(OcrLanguage.French)

Using input As New OcrInput()
    input.LoadImage("multilingual-document.jpg")
    Dim result = ocr.Read(input)
End Using
$vbLabelText   $csharpLabel

O guia multilíngue aborda padrões de combinação de idiomas. Os pacotes de idiomas restauram via dotnet restore em pipelines CI/CD sem envolvimento do instalador. O catálogo completo de idiomas lista todos os mais de 125 pacotes disponíveis.

Pré-processamento: Objeto de configurações vs. Pipeline de métodos

O OmniPage configura o pré-processamento por meio de um objeto RecognitionSettings ou PreprocessingSettings passado para o motor. O IronOCR expõe o pré-processamento como um pipeline de método em OcrInput. O comportamento é equivalente; O modelo de invocação difere.

// OmniPage: preprocessing embedded in RecognitionSettings
var preprocessSettings = new PreprocessingSettings
{
    AutoRotate = true,
    Deskew = true,
    DespeckleLevel = 2,
    ContrastEnhancement = true,
    NoiseReduction = true
};
var recognitionSettings = new RecognitionSettings
{
    Language = "English",
    Preprocessing = preprocessSettings
};

// IronOCR: preprocessing as method pipeline on OcrInput
using var input = new OcrInput();
input.LoadImage(imagePath);
input.Deskew();
input.DeNoise();
input.Contrast();
input.Binarize();
input.EnhanceResolution(300);
var result = new IronTesseract().Read(input);
// OmniPage: preprocessing embedded in RecognitionSettings
var preprocessSettings = new PreprocessingSettings
{
    AutoRotate = true,
    Deskew = true,
    DespeckleLevel = 2,
    ContrastEnhancement = true,
    NoiseReduction = true
};
var recognitionSettings = new RecognitionSettings
{
    Language = "English",
    Preprocessing = preprocessSettings
};

// IronOCR: preprocessing as method pipeline on OcrInput
using var input = new OcrInput();
input.LoadImage(imagePath);
input.Deskew();
input.DeNoise();
input.Contrast();
input.Binarize();
input.EnhanceResolution(300);
var result = new IronTesseract().Read(input);
Imports IronOcr

' OmniPage: preprocessing embedded in RecognitionSettings
Dim preprocessSettings As New PreprocessingSettings With {
    .AutoRotate = True,
    .Deskew = True,
    .DespeckleLevel = 2,
    .ContrastEnhancement = True,
    .NoiseReduction = True
}
Dim recognitionSettings As New RecognitionSettings With {
    .Language = "English",
    .Preprocessing = preprocessSettings
}

' IronOCR: preprocessing as method pipeline on OcrInput
Using input As New OcrInput()
    input.LoadImage(imagePath)
    input.Deskew()
    input.DeNoise()
    input.Contrast()
    input.Binarize()
    input.EnhanceResolution(300)
    Dim result = New IronTesseract().Read(input)
End Using
$vbLabelText   $csharpLabel

O guia de correção da qualidade da imagem abrange todos os filtros disponíveis. Para documentos em que o pré-processamento automático padrão é suficiente, não são necessárias chamadas explícitas — o IronOCR aplica correção de distorção, redução de ruído e aprimoramento de contraste automaticamente.

Funcionalidades adicionais do IronOCR

Além dos recursos abordados nas seções de comparação acima, o IronOCR oferece:

  • OCR baseado em região: Defina zonas CropRectangle para extrair texto de áreas específicas de um documento — campos de número de fatura, regiões de cabeçalho, blocos de assinatura — sem processar a página inteira
  • OCR assíncrono : Suporte nativo assíncrono para OCR não bloqueante em manipuladores de requisições e serviços em segundo plano do ASP.NET.
  • Acompanhamento do progresso : O processamento de documentos com várias páginas expõe funções de retorno de chamada de progresso para feedback da interface do usuário em operações em lote de longa duração.
  • Processamento de documentos digitalizados : Orientações específicas para os perfis de qualidade de digitalização mais comuns em fluxos de trabalho de captura de documentos Enterprise .
  • Extração de tabelas : Leitura estruturada de tabelas a partir de documentos digitalizados, retornando dados em nível de célula com posicionamento de linha e coluna.

Compatibilidade com .NET e Preparação para o Futuro

O IronOCR é compatível com .NET 8 e .NET 9, com a compatibilidade com .NET 10 seguindo o cronograma de lançamento padrão. A biblioteca é distribuída como um pacote NuGet multiplataforma sem pacotes específicos de plataforma para gerenciar — a mesma entrada <PackageReference Include="IronOcr" /> funciona em compilações CI para Windows,Linuxe macOS. O SDK Kofax OmniPage 2025.3 adicionou suporte paraLinuxem janeiro de 2026, mas não oferece suporte para macOS, o que limita os ambientes de desenvolvimento para equipes que utilizam hardware Apple Silicon. O IronOCR oferece suporte a MAUI, Blazor Server, ASP.NET Core, Worker Services, Azure Functions e aplicativos de console a partir do mesmo pacote, sem a necessidade de variantes específicas de cada framework. Equipes que visam arquiteturas de implantação nativas da nuvem (microsserviços conteinerizados, funções sem servidor, cargas de trabalho do Kubernetes) acharão o modelo de dependência do IronOCR— um único pacote NuGet sem requisitos de instalador ou arquivo de licença — significativamente mais compatível com infraestrutura como código e padrões de implantação imutáveis.

Conclusão

O Kofax OmniPage é uma referência genuína em precisão para captura de documentos Enterprise de alto volume, especialmente para reconhecimento de escrita à mão ICR e processamento de formulários OMR. Organizações que processam milhões de páginas em centros de processamento de formulários, programas de digitalização governamentais ou fluxos de trabalho de documentos bancários — e que já possuem infraestrutura de compras Enterprise implementada — utilizam essa tecnologia por razões justificáveis. O histórico de precisão de 30 anos é real.

O modelo de aquisição e a arquitetura de implantação que faziam sentido para o software de gerenciamento de documentos Enterprise em 2005 criam atritos significativos em 2026. O NuGet não existia quando o modelo de distribuição do SDK da OmniPage foi projetado. Pipelines de CI/CD, contêineresDockere funções sem servidor não eram alvos de implantação. Uma arquitetura de licença construída em torno de arquivos .lic, impressão digital de hardware e servidores de licença de rede é estruturalmente incompatível com imagens de contêiner imutáveis e infraestrutura em nuvem de escalonamento automático.

Para a grande maioria das cargas de trabalho de OCR em .NET — faturas, contratos, PDFs digitalizados, documentos de identidade, recibos — a diferença de precisão entre o OmniPage e o IronOCR em documentos limpos ou moderadamente degradados é inferior a 1%. Esse 1% não justifica um cronograma de aquisição de 4-12 semanas, preço de entrada significativo, taxas anuais de manutenção, custos de execução por página, sobrecarga operacional do servidor de licença, e um modelo de implantação que conflita com infraestrutura conteinerizada.IronOCR em $999 perpétuo oferece mais de 95% de precisão em conteúdos de documentos empresariais padrão, instala em 30 segundos, implanta emDockereLinuxsem etapas de instalador, e licenças via uma chave de string sem dependência de rede em tempo de execução.

A comparação que importa não é a precisão do ICR da OmniPage em documentos históricos degradados versus a da IronOCR— mas sim se qualquer projeto que realmente precise desse nível de precisão também possui a infraestrutura de aquisição Enterprise , a capacidade operacional do servidor de licenças e a tolerância de implantação para distribuição de SDK baseada em instaladores. Se todas as três respostas forem sim, o OmniPage é uma escolha legítima. Se alguma resposta for não, a documentação do IronOCR cobre tudo o que é necessário para entrar em produção no mesmo dia.

ObserveKofax OmniPage, OpenPDF, e Tesseract são marcas registradas de seus respectivos proprietários. Este site não é afiliado, endossado ou patrocinado pelo Google, Kofax ou LibrePDF. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários. As comparações são apenas para fins informativos e refletem informações disponíveis publicamente no momento da redação.

Perguntas frequentes

O que é o Kofax OmniPage?

O Kofax OmniPage é uma solução de OCR usada por desenvolvedores e empresas para extrair texto de imagens e documentos. É uma das várias opções de OCR avaliadas juntamente com o IronOCR para desenvolvimento de aplicações .NET.

Como o IronOCR se compara ao Kofax OmniPage para desenvolvedores .NET?

IronOCR é uma biblioteca OCR .NET nativa do NuGet que utiliza o IronTesseract como mecanismo principal. Comparada ao Kofax OmniPage, oferece implantação mais simples (sem instaladores de SDK), preço fixo e uma API C# limpa, sem interoperabilidade COM ou dependências de nuvem.

O IronOCR é mais fácil de configurar do que o Kofax OmniPage?

O IronOCR é instalado por meio de um único pacote NuGet. Não há instaladores de SDK, arquivos de licença para copiar, componentes COM para registrar ou binários de tempo de execução separados para gerenciar. Todo o mecanismo de OCR está incluído no pacote.

Quais são as diferenças de precisão entre o Kofax OmniPage e o IronOCR?

O IronOCR alcança alta precisão de reconhecimento para documentos comerciais padrão, faturas, recibos e formulários digitalizados. Para documentos muito degradados ou com escritas incomuns, a precisão varia de acordo com a qualidade da fonte. O IronOCR inclui filtros de pré-processamento de imagem para melhorar o reconhecimento em entradas de baixa qualidade.

O IronOCR suporta extração de texto de PDFs?

Sim. O IronOCR extrai texto tanto de PDFs nativos quanto de imagens digitalizadas de PDFs em uma única chamada. Ele também suporta arquivos TIFF com várias páginas, imagens e fluxos de dados. Para PDFs digitalizados, o OCR é aplicado página por página, com objetos de resultado por página.

Como se compara o licenciamento do Kofax OmniPage ao do IronOCR?

O IronOCR utiliza uma licença perpétua com preço fixo, sem cobranças por página ou por digitalização. Organizações que processam grandes volumes de documentos pagam o mesmo valor de licença, independentemente do volume. Detalhes e preços por volume estão disponíveis na página de licenciamento do IronOCR.

Quais idiomas o IronOCR suporta?

O IronOCR suporta 127 idiomas através de pacotes de idiomas NuGet separados. Adicionar um idioma requer um único comando 'dotnet add package IronOcr.Languages.{Idioma}'. Não é necessário inserir arquivos manualmente nem configurar caminhos.

Como faço para instalar o IronOCR em um projeto .NET ?

Instale via NuGet: 'Install-Package IronOcr' no Console do Gerenciador de Pacotes ou 'dotnet add package IronOcr' na CLI. Pacotes de idiomas adicionais são instalados da mesma forma. Não é necessário instalar o SDK nativo.

O IronOCR é adequado para Docker e implantações em contêineres, ao contrário do Kofax OmniPage?

Sim. O IronOCR funciona em contêineres Docker por meio de seu pacote NuGet. A chave de licença é definida por meio de uma variável de ambiente. Não são necessários arquivos de licença, caminhos de SDK ou montagens de volume para o próprio mecanismo de OCR.

Posso experimentar o IronOCR antes de comprar, em comparação com o Kofax OmniPage?

Sim. O modo de avaliação do IronOCR processa documentos e retorna resultados de OCR com uma marca d'água sobreposta. Você pode verificar a precisão em seus próprios documentos antes de adquirir uma licença.

O IronOCR suporta leitura de código de barras juntamente com extração de texto?

O IronOCR concentra-se na extração de texto e OCR. Para leitura de código de barras, a Iron Software fornece o IronBarcode como uma biblioteca complementar. Ambos estão disponíveis individualmente ou como parte do pacote Iron Suite.

É fácil migrar do Kofax OmniPage para o IronOCR?

A migração do Kofax OmniPage para o IronOCR normalmente envolve a substituição das sequências de inicialização pela instanciação do IronTesseract, a remoção do gerenciamento do ciclo de vida COM e a atualização das chamadas de API. A maioria das migrações reduz significativamente a complexidade do código.

Kannaopat Udonpant
Engenheiro de Software
Antes de se tornar Engenheiro de Software, Kannapat concluiu um doutorado em Recursos Ambientais pela Universidade de Hokkaido, no Japão. Durante o doutorado, Kannapat também integrou o Laboratório de Robótica Veicular, que faz parte do Departamento de Engenharia de Bioprodução. Em 2022, ele utilizou suas habilidades ...
Leia mais

Equipe de Suporte Iron

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim