Estou escrevendo um verificador de OCR simples no Excel que analisa o arquivo de texto de saída do OCR em palavras e usa o Wikcionário para verificar uma seleção de palavras para ver se são palavras válidas.
Eu sei que existem sistemas sofisticados de pesquisa de dicionário executados em Python, mas estou tentando fazer isso sem precisar entrar no Python. Então, estou usando o Excel e o Wikcionário para uma abordagem simples.
Eu tenho uma função VBA chamada vHttpRequest()
que acessa uma URL e pode retornar o status retornado ao fazer isso. Por exemplo, se a palavra for "maçã", executo:
vHttpRequest("https://en.wiktionary.org/wiki/apple", , "status")
O que me dá o status 200, indicando que “maçã” é uma palavra válida.
Se o OCR omitiu o espaço em "três maçãs", executo:
vHttpRequest("https://en.wiktionary.org/wiki/threeapples", , "status")
Que retorna 404, indicando que “três maçãs” não é uma palavra válida.
Isso está funcionando muito bem. Ele identifica corretamente a maioria dos erros de OCR. Dois detalhes no processo são que a pesquisa do Wikcionário diferencia maiúsculas de minúsculas e não inclui possessivos, então se eu obtiver um 404, tento novamente com a conversão para minúsculas e com a remoção das duas últimas letras se forem "'s " ou "s'".
O problema é quando recebo uma palavra que é válida em algum outro idioma. O Wikcionário divide suas páginas com âncoras para cada idioma em que a palavra existe. Assim, por exemplo, se a palavra for “ther”, essa palavra é válida em três outras línguas, mas não no inglês moderno. Então, eu gostaria de executar algo como:
vHttpRequest("https://en.wiktionary.org/wiki/ther#English", , "status")
Para testar se a página do Wikcionário para "ther" tem uma seção para inglês. O problema é que a chamada acima retorna 200 porque a página para “ther” existe. A verificação de status ignora a âncora "#English" na URL.
Existe uma maneira de testar se essa âncora existe nessa página? Também aberto a sugestões de melhores soluções para o problema.
Você já tentou usar a API deles? Eles adicionaram recentemente uma API REST que você pode usar para consultar palavras ( link ) que você pode usar para obter JSON formatado de volta, que você pode analisar facilmente.
Um exemplo de pesquisa da palavra "Árbitro" (encontrada em vários idiomas) seria assim
O resultado terá múltiplas entradas, mas como você pode ver, basta verificar se o bloco "en" existe para saber se é uma palavra em inglês ou não.
Aceitei a resposta do @Silbee porque ela fornece uma boa solução - melhor do que a detecção de âncora que solicitei - para o problema de determinar programaticamente no Wikcionário se uma palavra é válida em inglês.
No entanto, também encontrei uma solução ainda melhor para o problema mais geral de determinar programaticamente se uma palavra é válida em inglês.
Enviei a mesma pergunta que enviei aqui para ChatGPT. Ele não me falou sobre a API disponível para o Wikcionário , mas sugeriu algumas soluções alternativas. A maioria deles exigia o uso de python, mas um não. Isso foi usar o
CheckSpelling
método do MS Word . (Um "método" é uma função executada em um objeto.) Isso pode ser executado em um documento do MS Word diretamente no Word VBA, mas também pode ser executado em um intervalo de células no Excel, chamando-o de um sub no Excel VBA. Truque bacana. A vantagem de fazer isso em vez da pesquisa no Wikcionário é que ela é executada localmente no meu computador, então não tenho a sobrecarga de fazer uma solicitação http para cada palavra. Isso pode fazer uma grande diferença ao procurar mais do que algumas palavras. (Estou executando uma instalação local do Office 2021, não uma versão online.)Uma coisa a ser observada se você tentar fazer isso: existem pelo menos cinco
CheckSpelling
métodos no MS Word e Excel, três no Word e dois no Excel. Dos cinco, três deles são métodos de um intervalo ou documento, e todos abrem uma caixa de diálogo de revisão, portanto não são adequados para uso programático. Os dois que são adequados para programação são o método do aplicativo Word ao qual vinculei acima e um método do aplicativo Excel . À primeira vista, ao trabalhar no Excel, pareceria melhor usar o método Excel, mas ChatGPT me disse que é menos capaz que a versão Word.ChatGPT detalhou as diferenças entre os dois métodos. Perguntei como ele sabia disso, já que não há menção de diferença nos documentos do MS. Dizia: “As diferenças detalhadas… normalmente não são documentadas em uma fonte específica. Em vez disso, são inferidos de várias fontes, documentação e experiência prática. Aqui estão algumas etapas que você pode seguir para encontrar mais informações sobre este tópico:” Em seguida, ele me deu uma lista de cinco tipos de fontes, incluindo documentação oficial, fóruns de suporte, livros, blogs e artigos. Acho que posso parafrasear essa resposta como “Boa sorte, seu humano fraco, tentando digerir a amplitude de informações que costumava lhe contar sobre essas diferenças”.