Como ler metadados de imagem do OneNote em Python
Este guia mostra como ler metadados de imagem nome do arquivo, dimensões, texto alternativo e URL de hiperlink ?? a partir do Microsoft OneNote. .one arquivos em Python usando Document.GetChildNodes() Para localizar todos os Image FOSS para Python expõe todos os Image campos de metadados através de uma API de classe limpa.
Precondições
Instale o pacote Aspose.Note FOSS a partir do PyPI usando o comando pip abaixo:
pip install aspose-notePropriedades da imagem
| Propriedade | Tipo de veículo: | Descrição: |
|---|---|---|
img.Bytes | bytes | Gravar para disco com o computador. open(name, "wb").write(img.Bytes). |
img.FileName | `str | None` |
img.Width | `float | None` |
img.Height | `float | None` |
img.AlternativeTextDescription | `str | None` |
img.AlternativeTextTitle | `str | None` |
img.HyperlinkUrl | `str | None` |
img.Tags | list[NoteTag] | Marcas do OneNote anexadas a esta imagem (estrela, caixa de seleção etc.). |
Passo 1: Carregar o documento e encontrar imagens
Carregamento a .one Arquivo com Document E chama-me. GetChildNodes(Image) para recuperar cada Image nó do arvore de documentos:
from aspose.note import Document, Image
doc = Document("MyNotes.one")
images = doc.GetChildNodes(Image)
print(f"Found {len(images)} image(s)")Passo 2: Leia os metadados de cada imagem
Proteja todos os campos anulaveis com: is not None antes da utilização:
from aspose.note import Document, Image
doc = Document("MyNotes.one")
for i, img in enumerate(doc.GetChildNodes(Image), start=1):
print(f"\nImage {i}:")
print(f" Filename: {img.FileName or '(no filename)'}")
print(f" Size: {img.Bytes and len(img.Bytes):,} bytes")
if img.Width is not None and img.Height is not None:
print(f" Dimensions: {img.Width:.1f} × {img.Height:.1f} pts")
if img.AlternativeTextDescription:
print(f" Alt text: {img.AlternativeTextDescription}")
if img.HyperlinkUrl:
print(f" Hyperlink: {img.HyperlinkUrl}")
if img.Tags:
for tag in img.Tags:
print(f" Tag: {tag.Label or tag.Icon}")Exemplo completo: Salvar imagens com relatório de metadados
A função abaixo itera todos os Image nós, salva os bytes brutos de cada imagem no disco e imprime um relatório de metadados incluindo dimensões, texto alternativo e URL do hiperlink:
from pathlib import Path
from aspose.note import Document, Image
def report_and_save_images(one_path: str, out_dir: str = "images") -> None:
doc = Document(one_path)
images = doc.GetChildNodes(Image)
if not images:
print("No images found.")
return
out = Path(out_dir)
out.mkdir(exist_ok=True)
for i, img in enumerate(images, start=1):
# Determine save name
name = img.FileName or f"image_{i}.bin"
dest = out / name
# Save bytes
dest.write_bytes(img.Bytes)
# Report metadata
dims = (
f"{img.Width:.0f}×{img.Height:.0f}pts"
if img.Width is not None and img.Height is not None
else "unknown size"
)
alt = img.AlternativeTextDescription or ""
link = img.HyperlinkUrl or ""
print(f" [{i}] {name} {dims}"
+ (f" alt='{alt}'" if alt else "")
+ (f" url={link}" if link else ""))
print(f"\nSaved {len(images)} image(s) to '{out_dir}/'")
report_and_save_images("MyNotes.one")Filtrar imagens por propriedade
Imagens com hiperligações
Filtrar imagens que não tenham um espaço vazio HyperlinkUrl Propriedade para listar apenas imagens vinculadas e os seus URL de destino:
from aspose.note import Document, Image
doc = Document("MyNotes.one")
linked = [img for img in doc.GetChildNodes(Image) if img.HyperlinkUrl]
for img in linked:
print(f"{img.FileName or 'image'} → {img.HyperlinkUrl}")Imagens com texto alternativo
Filtrar imagens que não tenham um espaço vazio AlternativeTextDescription Propriedade para identificar imagens com anotações de acessibilidade:
from aspose.note import Document, Image
doc = Document("MyNotes.one")
with_alt = [img for img in doc.GetChildNodes(Image) if img.AlternativeTextDescription]
for img in with_alt:
print(f"{img.FileName}: {img.AlternativeTextDescription}")Notas
img.Bytesé sempre presente (retornos deb""para imagens ilegíveis, nunca.None) Verificaçãolen(img.Bytes) > 0antes de salvar.img.AlternativeTextTitlepode serNonese o documento de origem não tiver um título. Useimg.AlternativeTextDescriptioncomo uma alternativa.- As dimensões estão em: pontos de (1 ponto = 1/72 polegada), combinando as convenções do PowerPoint e PDF.