Tainacan 1.2.0 – Edição de Conteúdo Extraído de Documentos, Geração de Atributos Alt com IA e Melhorias no Protocolo OAI-PMH

Nestes últimos meses estamos reorganizando nossa documentação e códigos na expectativa de facilitar a vida de futuros colaboradores do projeto. Neste período tivemos contribuições valiosas de estudantes de Engenharia de Software da Universidade Federal de Brasília no projeto da disciplina GCES. Valeu pessoal!

E para fechar o primeiro semestre de 2026, trazemos um conjunto de novidades “de nicho”, daquelas que podem dizer pouco para alguns, mas que atendem a pedidos bem específicos de alguns membros da comunidade que finalmente estão sendo ouvidos. Então se você está curioso para conhecer estes casos, vem com a gente!

Novidades

Edição de Conteúdo Extraído de Documentos

Captura de tela do formulário de edição de item com um botão e um balão de aviso dizendo 'Conteúdo do documento', entre os botões de editar e remover.

Desde a versão 0.12, o Tainacan permite a busca textual em itens cujo documento principal é um arquivo PDF. Este recurso antes precisava ser habilitado por uma constante e mais recentemente passou a poder ser habilitado via Tela de Configurações do plugin. Funciona da seguinte maneira: ao enviar o arquivo PDF para o item, o documento é lido por um extrator de texto do lado do servidor, que tenta processar qualquer arquivo textual e o guarda em uma espécie de metadado escondido, o “Conteúdo Textual do Documento”. Se tudo tiver funcionado bem, você poderá encontrar valores deste texto usando a busca textual simples e a busca avançada no campo “Documento”.

Entretanto este recurso sempre esteve escondido do usuário. Se extrator de texto não teve sucesso em seu trabalho ou se identificou algo errado, era impossível de se auditar. Para ajudar estes casos, estamos agora expondo na interface este recurso, que ficará acessível ao usuário por um botão ao lado dos ícones de “Editar” e “Remover” Documento:

O modal que se abre te mostra o conteúdo textual que foi processado. Ele aparecerá em uma área de texto editável, permitindo correções. E se você desejar gerar a extração de novo (suponhamos que a extração estava desabilitada quando o seu documento foi enviado), você pode pedir por uma nova extração ali mesmo, e conferir seu resultado.

Captura de tela do modal de edição de conteúdo do documento, mostrando uma grande área de texto com um longo texto processado de um PDF. Há um botão para se re-extrair o conteúdo.

Esta extração de documento funciona com uma biblioteca de processamento de arquivos comumente presente em hospedagens WordPress. Mas nem todo documento funciona bem com ela. Por exemplo, em PDFs com imagens, ela não roda algum tipo de OCR.

Pensando nisso, também preparamos o código para que futuros plugins possam delegar a extração para outros fluxos, onde possam ser utilizados, por exemplo, algoritmos com IA (Inteligência Artificial) para uma detecção mais avançada. E não só para extrair documentos de PDF, mas para ler dados de imagens ou de URLs cujo conteúdo é externo.

Já fizemos alguns experimentos neste sentido e planejamos trazer alguns plugins de exemplo nos próximos meses. E por falar em IA…

Geração de Atributos Alt de Imagens com IA

A presença de ferramentas de Inteligência Artificial no nosso dia a dia mudou radicalmente a forma como se trabalha em algumas áreas. Naturalmente enxergamos um futuro onde estas soluções irão se integrar ao Tainacan para servir de apoio aos profissionais que catalogam seus acervos, em diversas formas. Porém temos entre nós alguns princípios claros:

  1. A Inteligência Artificial deve ser usada para benefício comum dos profissionais que alimentam os dados e para as pessoas que consomem os dados, sendo seu trabalho sempre auditável por quem a usa;
  2. O plugin como software livre e aberto não deve prender o usuário à uma solução única, ligada à apenas uma empresa ou pilha tecnológica;
  3. O usuário deve, mesmo que isto demande esforço externo ao plugin, poder usar soluções próprias de IA para rodar os recursos implementados, visando garantir a autonomia e soberania dos seus dados;

Este é um momento de ampla experimentação — com sucessos e falhas — à medida que trabalhamos com essas ferramentas; no entanto, acompanhamos as diversas discussões sobre o assunto e acreditamos que, guiados por esses princípios, podemos entregar gradualmente funcionalidades interessantes. Temos um escopo de requisitos e planos para o futuro muito mais amplo, mas, por enquanto, estamos começando com algo muito simples que gera um impacto bastante positivo: a criação de Atributos alt para imagens, visando melhorar a acessibilidade.

Atributos Alt (Texto alternativo) de Imagens, são uma descrição textual e objetiva do que está em uma imagem para situações em que a mesma não pode ser enxergada. É útil em geral quando uma imagem ainda não foi carregada mas acima de tudo é importante para usuários de leitores de tela, que podem não conseguir ver a imagem. Já há muitos anos o Tainacan oferece uma área na interface com destaque para que catalogadores coloquem uma descrição da imagem de miniatura, por exemplo. O problema é que na prática, este campo é muitas vezes deixado vazio, fazendo com que a imagem seja considerada meramente decorativa para os leitores de tela.

É neste cenário que consideramos que a IA pode ajudar. Em nossos recentes testes com um usuário cego ele nos informou ter tido bons resultados com a descrição de imagens extraída por IA no seu dia a dia. A comunidade do WordPress também segue este entendimento, e uma das primeiras habilidades que o plugin “AI”, mantido pelos desenvolvedores oficias do projeto, ganhou, foi a extração de Alt de imagens enviadas para a galeria de mídias ou para blocos Gutenberg.

Captura de Tela mostrando a funcionalidade de gerar um texto alternativo no bloco gutenberg de imagem.

Já que a lógica por trás do plugin de IA do WordPress está pronta, não vemos porquê não trazê-la para dentro do Tainacan na forma de uma integração. Isto significa que, assim como nossa integração com o ElasticPress, não estamos reinventando a roda em nosso código, mas sim usando algo que está pronto, apenas expondo dentro da interface do Tainacan. Com isso ganhamos já em alguns pontos importantes:

  • O plugin de IA do WordPress é agnóstico à qual modelo de IA você está usando. Seja OpenAI, Claude, Gemini ou um modelo próprio treinado em seu servidor, ele irá funcionar através dos Conectores, um recurso nativo do WordPress 7.0. Com isso esperamos que mais e mais soluções abertas e treinadas pelas próprias instituições possam ser adotadas;
  • Ao se usar o plugin de IA, temos à disposição outros recursos deles, como a possibilidade de se usar sua tela de Registro de Requisições de IA. Além disso, acreditamos que outras funcionalidades do plugin podem ser de interesse dos usuários do Tainacan, como as notas editoriais em posts;
  • Isso permite nos preparar para futuras integrações com funcionalidades que este plugin já tem, como geração de Taxonomias;

Assim sendo, o que é preciso para se usar a nova funcionalidade:

  1. WordPress 7.0+ com o plugin de IA instalado;
  2. Um conector de IA configurado com algum modelo que suporte processamento de imagens em “Configurações” -> “Conexões”;
  3. A funcionalidade “Geração de texto alternativo” ativada em “Configurações” -> “IA” no WordPress;

Com isto feito, ao acessar a página de edição de item, você verá a nova opção logo abaixo da área de texto:

Captura de tela mostrando o botão de se Gerar com IA no campo de Texto Alternativo

Uma vez concluída a geração, o usuário pode revisar e editar o texto como preferir. Graças ao plugin de IA, a mesma funcionalidade também vai estar disponível para Documentos e Anexos através da galeria de mídias do WordPress.

Captura de tela mostrando a galeria de edição de mídia na seleção de um documento para o item, com a opção de gerar texto alternativo no canto inferior direito.

Nota: a requisição feita para gerar o texto alternativo envia sua imagem para o servidor onde está o modelo de IA configurado no conector. Fique atento aos seus requisitos de privacidade pois neste contexto não importa se o item do Tainacan está público ou privado: a imagem irá para o servidor que roda a IA.

Melhorias no Protocolo OAI-PMH

Desde suas primeiras versões, o Tainacan sempre buscou oferecer recursos que permitam a interoperabilidade de acervos. Para além da nossa API REST, Importadores e Exportadores, uma das formas mais poderosas de se fazer isso é através de um protocolo de integração muito usado na Europa, o OAI-PMH. Este procolo, desenvolvido pela Open Archives Initiative, oferece uma maneira padronizada para se buscar por metadados de itens nas mais diversas coleções. O Tainacan sempre buscou oferecer suporte a ele, mas verdade seja dita, esta funcionalidade foi deixada de lado nos últimos anos e esteve tão abandonada que deixamos de anunciar suporte à mesma.

Estamos agora finalmente retomando esta frente, com uma refatoração de nosso endpoint OAI-PMH. Isto significa que coletores que implementam e conhecem o protocolo, podem agora fazer requisições para os verbos:

  • /wp-json/tainacan/v2/oai/?verb=Identify – Para obter informações sobre o repositório;
  • /wp-json/tainacan/v2/oai/?verb=ListMetadataFormats – Para ver os padrões de metadados suportados;
  • /wp-json/tainacan/v2/oai/?verb=ListSets – Para ver as coleções disponíveis no repositório;
  • /wp-json/tainacan/v2/oai/?verb=ListRecords – Para listar os itens disponíveis;
  • /wp-json/tainacan/v2/oai/?verb=GetRecord – Para ver um item em específico;

O padrão de metadados suportado inicialmente é o oai_dc, que obedecerá o mapeamento DublinCore que tiver sido feito na coleção.

Estes verbos já existiam no Tainacan, mas necessitavam de diversas atualizações e melhorias. Com isso retomamos o desenvolvimento de funcionalidades neste assunto. Mais adiante, esperamos trazer novidades como:

  • Um Importador OAI-PMH, para poder também trazer itens de repositórios que já implementem o protocolo;
  • Um Expositor OAI-PMH, para facilitar o acesso aos verbos da API através da interface;
  • Um plugin dedicado ao protocolo, que permita acompanhar requisições, gerar cache, obter estatísticas de coleta e validações de uso para uma administração mais avançada.

Página de Capa do Termo de Taxonomia

Talvez você já esteja familiarizado com o recurso “Página de Capa”, que ter permite definir uma página customizada para apresentar sua coleção no lugar da já existente página que lista os itens da coleção. Agora esta mesma funcionalidade pode ser ativada em Termos de Taxonomias!

Captura de Tela mostrando o modal de edição de um Termo com a opção de se definir uma página de capa.

Este é um recurso simples mas poderoso. Com uma página de capa definida para o termo, qualquer tentativa de acesso ao link de um termo cairá em uma página que pode ser inteiramente construída com o editor de blocos ao invés da limitada lista de itens do termo. Você pode montar curadorias com mais informações sobre aquele termo, e usar os blocos do Tainacan ou de outros plugins para exibir os itens relacionados.

Melhorias

  • A quantidade de itens inicialmente carregados por página em listagens de itens da coleção pode finalmente ser modificada. Este valor por padrão é 12 mas agora pode ser alterado nas configurações da coleção, desde que respeitado o limite máximo da API (por padrão 96, mas isto é algo que também pode ser alterado nas configurações do plugin);
  • A opção “Mostrar imagem” no bloco de Lista de Itens da Coleção Tainacan agora também afeta Modos de Visualização como Ficha, Tabela, Lista e Cartões.
  • Documentos do item cujo tipo é “Texto” agora também aparecem no resultado da busca avançada caso se procure pelo conteúdo do documento;
  • Reforço na interface sobre o comportamento apropriado para metadados multivalorados vazios: Devem ser removidos ao invés de apenas “limpos”.
  • Atualização da biblioteca de gráficos usada nas telas de Relatórios;

Correções de Erro

  • Exibe os Caminhos de Navegação (breadcrumbs) mesmo se o Menu do Repositório estiver escondido;
  • Previne conflitos de estilo em situações onde o navegador ou sistema estão com modo “escuro” ativado;
  • Correção de campo errado no mapeador do INBCM Museológico;
  • Correções na forma como um metadado interno _wp_attached_file era atualizado em anexos quando a privacidade de um item muda;
  • Id da coleção sendo perdido ao se sair do modal de seleção em alguns blocos Gutenberg;
  • Campo “entity” faltando em alguns usos do Bloco de Facetas na hora de se carregar imagens;
  • Correções de strings em inglês;

Para Desenvolvedores

Atualmente alguns plugins em desenvolvimento precisam atualizar ou “auto-preencher” valores de metadados no formulário do item. Nestas situações, podem acabar apelando para uma estratégia de se procurar, via JavaScript, os campos do formulário para se manipular seus dados. Isso não funciona bem com dados complexos como metadados multivalorados e taxonomias hierárquicas. Um caminho mais apropriado seria enviar valores diretamente para a API REST do Tainacan, usando nosso endpoint de metadados do item.

Uma vez que a requisição confirma uma atualização bem sucedida, cabe ao plugin pedir para que o Tainacan recarregue sua interface, mostrando os novo valores. Para isso, basta invocar um evento javascript:

window.dispatchEvent(new CustomEvent('TainacanReloadItemMetadataForm', {
     detail: { itemId: 123, metadatumId: 456 }
}));

No exemplo, o item de ID 123 e o metadado de ID 456. Se muitos metadados foram atualizados, você pode chamar um evento que recarrega a tela inteira de edição do item:

window.dispatchEvent(new CustomEvent('TainacanReloadItemMetadataForm'));

Além disso, temos outras novidades para desenvolvedores:

  • A documentação para desenvolvedores agora é extraída diretamente do código para o repositório do código fonte do plugin, dentro da pasta /docs. Ela continuará a ser acessível pela nossa Wiki de usuários, mas estando mais próxima do código podemos melhorar nossa automação da documentação das classes, hooks, API, etc. Para rodar a criação destas páginas, use o script generate_docs.sh;
  • Temos agora uma GitHub Action que escuta alterações no código e roda o script para atualizar a documentação toda vez que um push é feito na branch develop;
  • Temos também uma PR Template no GitHub! Isso deve ajudar novos colaboradores a proporem alterações;
  • Com o filtro tainacan_item_supports_document_content_extraction desenvolvedores de plugins podem determinar se o tipo de documento de um certo item pode tentar ser extraído. Já com o filtro tainacan_extract_document_content é possível entrar no fluxo de extração e realizar sua própria extração. Pretendemos atualizar nossa documentação falando deste fluxo, mas por hora dê uma olhada neste comentário.

Baixe agora!

A versão 1.2.0 do Tainacan já está disponível para download no repositório de plugins do WordPress:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *