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.