Мы используем навыки Azure для определения кода языка, а затем выполняем распознавание документов с неизвестным кодом языка. Может ли кто-нибудь дать рекомендации по реализации этого условного кода? Я сталкиваюсь с ошибками и, возможно, применяю их неправильно.
Вам не нужно извлекать документы, по умолчанию индексатор делает это и предоставляет контент и метаданные в контексте /document
.
Для получения кода языка вы можете указать имя поля как
/document/metadata_language
.
Вы передаете это как входные данные для условного навыка и выполняете распознавание текста для дальнейшего улучшения.
Измените условный навык, как показано ниже.
{
"@odata.type": "#Microsoft.Skills.Util.ConditionalSkill",
"name": "Language Check",
"description": "Check if language code is 'Unknown'",
"context": "/document",
"inputs": [
{
"name": "condition",
"source": "= $(/document//document/metadata_language) == '(Unknown)'"
},
{
"name": "whenTrue",
"source": "/document/normalized_images/*" //here you can also use /document/content
},
{
"name": "whenFalse",
"source": "= null"
}
],
"outputs": [
{
"name": "output",
"targetName": "imagesForOcr"
}
]
},
Примечание. Обязательно укажите конфигурацию индексатора для извлечения контента и метаданных. Ниже приведено определение индексатора.
{
"@odata.context": "https://jgsaisearch.search.windows.net/$metadata#indexers/$entity",
"@odata.etag": "\"0x8DC91AC57C625BF\"",
"name": "azureblob-indexer",
"description": "",
"dataSourceName": "ds",
"skillsetName": "skillset1718943474465",
"targetIndexName": "azureblob-index",
"disabled": null,
"schedule": null,
"parameters": {
"batchSize": null,
"maxFailedItems": 0,
"maxFailedItemsPerBatch": 0,
"base64EncodeKeys": null,
"configuration": {
"dataToExtract": "contentAndMetadata",
"parsingMode": "default"
}
},
"fieldMappings": [
{
"sourceFieldName": "metadata_storage_path",
"targetFieldName": "metadata_storage_path",
"mappingFunction": {
"name": "base64Encode",
"parameters": null
}
}
],
"outputFieldMappings": [
{
"sourceFieldName": "/document/myLanguageCode",
"targetFieldName": "lang_code"
}
],
"cache": null,
"encryptionKey": null
}
Выход:
Раньше я думал, что, возможно, изображений нет в папке imagesForOcr, но в сеансе отладки я проверил, есть ли изображения, что означает, что я могу ожидать извлеченный_контент не в том месте, но я попробовал все это - /document/imagesForOcr/extracted_content и /document/extracted_content и /document/imagesForOcr/extracted_content/* я вижу ноль, единственный o/p
Конечно, вы получите нулевые значения. Поскольку вы документируете неизвестный язык. Попробуйте проверить состояние неизвестного языка.
Привет @JayashankarGS Я мог что-то пропустить, объясняя, может быть..... здесь целью было извлечение контента (как из известного, так и из неизвестного pdf-файла с кодом задержки), когда он неизвестен (то есть pdf-файл состоит из изображений), а затем для извлечения контента, который нам нужно использовать OCR, потому что в противном случае он не будет работать дальше, когда по методу по умолчанию известно, как индексатор выполняет извлечение ... в зависимости от того, что возможно ... это моя цель. Раньше я достиг этого, используя 4 шага (Edit1) - DocumentExtractionSkill -> LangDetectionSkill - > ConditionSkil -> OCR, но я знаю, что это неэффективно.
Цель: извлечь контент в обоих случаях...........Когда неизвестно – используйте OCR для извлечения..иначе, по умолчанию извлекает содержимое так же, как извлекает lang. код?
хорошо. Для текущего кода вы либо получите контент, если язык имеет значение de
, иначе — нулевые значения. Так что условное умение здесь не пригодится. Итак, моя идея состоит в том, чтобы сначала выполнить OCR для всех документов, затем передать /document/content
, /document/imagesForOcr
и /document/metadata_language
пользовательскому веб-API, где вы проверяете условие и возвращаете значения.
я могу это сделать, но проблема в том, что у меня есть файлы такого типа: appx. 100, остальные 10000 проблем не вызывают. Только представьте, сколько мне будет стоить увеличения времени, если я сделаю распознавание всех 10100 файлов. Вот почему я просто думаю о том, чтобы справиться с этим через условие.
Видите ли, то, что вы думаете об условном умении, неверно. он либо дает вам удовлетворенные записи, либо ноль. Например, у вас есть 100 ppx, и в условном навыке, если язык неизвестен или имеет значение null, тогда содержимое этих 100 ppx, иначе null. здесь вы получите только контент размером 100 пикселей, а для остальных 10 000 установлено значение null.
Хорошо, я понял, есть ли способ обойтись без customwebskill? @JayashankarGS
поднял новый вопрос, да? обновлю там. Я надеюсь, что мое решение сократило несколько шагов в отношении языкового кода.
Да, отмечено завершенным! @JayashankarGS
хорошо. Либо я, либо сообщество подскажем решение.
Привет @JayashankarGS Я попробовал твой путь. Кажется, он работает, но теперь возникает проблема с извлеченным_контентом, я получаю ноль. Можете ли вы помочь здесь, потому что если вы видите Edit2, я включил индексатор и набор навыков json и сеанс отладки o/ps.