Conservez la mise en forme d’origine des fichiers PDF pour visualiser les documents traduits avec Amazon Textract, Amazon Translate et PDFBox.

Preserve the original formatting of PDF files to view translated documents with Amazon Textract, Amazon Translate, and PDFBox.

Les entreprises de divers secteurs créent, numérisent et stockent de grands volumes de documents PDF. Dans de nombreux cas, le contenu est riche en texte et est souvent écrit dans une langue différente, nécessitant une traduction. Pour répondre à ce besoin, vous avez besoin d’une solution automatisée pour extraire le contenu de ces PDF et les traduire rapidement et à moindre coût.

De nombreuses entreprises ont des utilisateurs mondiaux diversifiés et ont besoin de traduire du texte pour permettre une communication interlinguistique entre eux. Cela nécessite un effort humain manuel, lent et coûteux. Il est donc nécessaire de trouver une solution évolutive, fiable et rentable pour traduire des documents tout en conservant le formatage original du document.

Pour des secteurs tels que les soins de santé, en raison des exigences réglementaires, les documents traduits nécessitent la vérification de la validité du document traduit par un être humain supplémentaire.

Si le document traduit ne conserve pas le formatage et la structure originaux, il perd son contexte. Cela peut rendre difficile pour un réviseur humain de valider et de corriger le document.

Dans cet article, nous montrons comment créer un nouveau PDF traduit à partir d’un PDF numérisé tout en conservant la structure et le formatage originaux du document à l’aide d’une approche basée sur la géométrie avec Amazon Textract, Amazon Translate et Apache PDFBox.

Aperçu de la solution

La solution présentée dans cet article utilise les composants suivants:

  • Amazon Textract – Un service entièrement géré d’apprentissage automatique (ML) qui extrait automatiquement le texte imprimé, l’écriture manuscrite et d’autres données à partir de documents numérisés, allant au-delà de la simple reconnaissance optique de caractères (OCR) pour identifier, comprendre et extraire des données à partir de formulaires et de tableaux. Amazon Textract peut détecter du texte dans une variété de documents, y compris des rapports financiers, des dossiers médicaux et des formulaires fiscaux.
  • Amazon Translate – Un service de traduction neuronale qui offre une traduction linguistique rapide, de haute qualité et abordable. Amazon Translate offre des capacités de traduction à la demande et par lots de haute qualité dans plus de 2 970 paires de langues, tout en réduisant vos coûts de traduction.
  • PDF Translate – Une bibliothèque open-source écrite en Java et publiée sur AWS Samples sur GitHub. Cette bibliothèque contient la logique pour générer des documents PDF traduits dans la langue de votre choix avec Amazon Textract et Amazon Translate. Elle utilise également la bibliothèque Java open-source Apache PDFBox pour créer des documents PDF. Des bibliothèques de traitement PDF similaires sont disponibles dans d’autres langages de programmation, par exemple Node PDFBox.

Lors de la traduction automatique, il peut arriver que vous souhaitiez préserver certaines sections de texte de la traduction, telles que les noms ou les identifiants uniques. Amazon Translate permet des modifications de balises, ce qui vous permet de spécifier quel texte ne doit pas être traduit. Amazon Translate prend également en charge la personnalisation de la formalité, ce qui vous permet de personnaliser le niveau de formalité dans votre traduction.

Pour plus de détails sur les limites d’Amazon Textract, consultez les quotas d’Amazon Textract.

La solution est limitée aux langues qui peuvent être extraites par Amazon Textract, qui prend actuellement en charge l’anglais, l’espagnol, l’italien, le portugais, le français et l’allemand. Ces langues sont également prises en charge par Amazon Translate. Pour obtenir la liste complète des langues prises en charge par Amazon Translate, consultez Langues prises en charge et codes de langue.

Nous utilisons le PDF suivant pour démontrer la traduction du texte de l’anglais vers l’espagnol. La solution prend également en charge la génération du document traduit sans aucun formatage. La position du texte traduit est conservée. Les documents PDF source et traduits sont également disponibles dans le référentiel AWS Samples GitHub.

Dans les sections suivantes, nous montrons comment exécuter le code de traduction sur une machine locale et examiner le code de traduction plus en détail.

Prérequis

Avant de commencer, configurez votre compte AWS et l’interface de ligne de commande AWS (AWS CLI). Pour accéder à des services AWS tels que Textract et Translate, des autorisations IAM appropriées sont nécessaires. Nous recommandons d’utiliser des autorisations de privilège minimal. Pour en savoir plus sur les autorisations IAM, consultez les politiques et les autorisations dans IAM ainsi que la façon dont Amazon Textract fonctionne avec IAM et la façon dont Amazon Translate fonctionne avec IAM.

Exécuter le code de traduction sur une machine locale

Cette solution se concentre sur le code Java autonome pour extraire et traduire un document PDF. Cela facilite les tests et les personnalisations pour obtenir le document PDF traduit le mieux rendu. Le code peut ensuite être intégré dans une solution automatisée pour le déployer et l’exécuter sur AWS. Consultez la traduction de documents PDF à l’aide d’Amazon Translate et d’Amazon Textract pour une architecture d’exemple qui utilise Amazon Simple Storage Service (Amazon S3) pour stocker les documents et AWS Lambda pour exécuter le code.

Pour exécuter le code sur une machine locale, suivez les étapes suivantes. Les exemples de code sont disponibles sur le dépôt GitHub.

  1. Cloner le dépôt GitHub :

    git clone https://github.com/aws-samples/amazon-translate-pdf
  2. Exécuter la commande suivante :

    cd amazon-translate-pdf
  3. Exécuter la commande suivante pour traduire de l’anglais à l’espagnol :

    java -jar target/translate-pdf-1.0.jar --source en --translated es

Deux documents PDF traduits sont créés dans le dossier “documents”, avec et sans la mise en forme d’origine (SampleOutput-es.pdf et SampleOutput-min-es.pdf).

Code pour générer le PDF traduit

Les extraits de code suivants montrent comment prendre un document PDF et générer un document PDF traduit correspondant. Il extrait le texte à l’aide d’Amazon Textract et crée le PDF traduit en ajoutant le texte traduit en tant que calque à l’image. Il s’appuie sur la solution présentée dans l’article “Generating searchable PDFs from scanned documents automatically with Amazon Textract”.

Le code récupère d’abord chaque ligne de texte avec Amazon Textract. Amazon Translate est utilisé pour obtenir le texte traduit et enregistrer la géométrie du texte traduit.

Region region = Region.US_EAST_1;
TextractClient textractClient = TextractClient.builder()
        .region(region)
        .build();

// Obtenir l'objet Document d'entrée en bytes
Document pdfDoc = Document.builder()
        .bytes(SdkBytes.fromByteBuffer(imageBytes))
        .build();

TranslateClient translateClient = TranslateClient.builder()
        .region(region)
        .build();

DetectDocumentTextRequest detectDocumentTextRequest = DetectDocumentTextRequest.builder()
        .document(pdfDoc)
        .build();

// Appeler l'opération Detect
DetectDocumentTextResponse textResponse = textractClient.detectDocumentText(detectDocumentTextRequest);

List<Block> blocks = textResponse.blocks();
List<TextLine> lines = new ArrayList<>();
BoundingBox boundingBox;

for (Block block : blocks) {
    if ((block.blockType()).equals(BlockType.LINE)) {
        String source = block.text();

        TranslateTextRequest requestTranslate = TranslateTextRequest.builder()
                .sourceLanguageCode(sourceLanguage)
                .targetLanguageCode(destinationLanguage)
                .text(source)
                .build();

        TranslateTextResponse resultTranslate = translateClient.translateText(requestTranslate);

        boundingBox = block.geometry().boundingBox();
        lines.add(new TextLine(boundingBox.left(),
                boundingBox.top(),
                boundingBox.width(),
                boundingBox.height(),
                resultTranslate.translatedText(),
                source));
    }
}
return lines;

La taille de la police est calculée comme suit et peut être facilement configurée :

int fontSize = 20;
float textWidth = font.getStringWidth(text) / 1000 * fontSize;
float textHeight = font.getFontDescriptor().getFontBoundingBox().getHeight() / 1000 * fontSize;
 
if (textWidth > bbWidth) {
    while (textWidth > bbWidth) {
        fontSize -= 1;
        textWidth = font.getStringWidth(text) / 1000 * fontSize;
        textHeight = font.getFontDescriptor().getFontBoundingBox().getHeight() / 1000 * fontSize;
     }
} else if (textWidth < bbWidth) {
     while (textWidth < bbWidth) {
         fontSize += 1;
         textWidth = font.getStringWidth(text) / 1000 * fontSize;
         textHeight = font.getFontDescriptor().getFontBoundingBox().getHeight() / 1000 * fontSize;
      }
}

Le PDF traduit est créé à partir de la géométrie enregistrée et du texte traduit. Les changements de couleur du texte traduit peuvent être facilement configurés.

float width = image.getWidth();
float height = image.getHeight();
 
PDRectangle box = new PDRectangle(width, height);
PDPage page = new PDPage(box);
page.setMediaBox(box);
this.document.addPage(page); //org.apache.pdfbox.pdmodel.PDDocument
 
PDImageXObject pdImage;
 
if(imageType == ImageType.JPEG){
    pdImage = JPEGFactory.createFromImage(this.document, image);
} else {
    pdImage = LosslessFactory.createFromImage(this.document, image);
}
 
PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.OVERWRITE, false);
 
contentStream.drawImage(pdImage, 0, 0);
contentStream.setRenderingMode(RenderingMode.FILL);
 
for (TextLine cline : lines){
    String clinetext = cline.text;
    String clinetextOriginal = cline.originalText;
                       
    FontInfo fontInfo = calculateFontSize(clinetextOriginal, (float) cline.width * width, (float) cline.height * height, font);
    //config to include original document structure - overlay with original
    contentStream.setNonStrokingColor(Color.WHITE);
    contentStream.addRect((float) cline.left * width, (float) (height - height * cline.top - fontInfo.textHeight), (float) cline.width * width, (float) cline.height * height);
    contentStream.fill();
 
    fontInfo = calculateFontSize(clinetext, (float) cline.width * width, (float) cline.height * height, font);
    //config to include original document structure - overlay with translated
    contentStream.setNonStrokingColor(Color.WHITE);
    contentStream.addRect((float) cline.left * width, (float) (height - height * cline.top - fontInfo.textHeight), (float) cline.width * width, (float) cline.height * height);
    contentStream.fill();
    //change the output text color here
    fontInfo = calculateFontSize(clinetext.length() <= clinetextOriginal.length() ? clinetextOriginal : clinetext, (float) cline.width * width, (float) cline.height * height, font);
    contentStream.setNonStrokingColor(Color.BLACK);
    contentStream.beginText();
    contentStream.setFont(font, fontInfo.fontSize);
    contentStream.newLineAtOffset((float) cline.left * width, (float) (height - height * cline.top - fontInfo.textHeight));
    contentStream.showText(clinetext);
    contentStream.endText();
}
contentStream.close()

La figure suivante montre le document traduit en espagnol avec la mise en forme d’origine (SampleOutput-es.pdf).

La figure suivante montre le PDF traduit en espagnol sans mise en forme (SampleOutput-min-es.pdf).

Temps de traitement

Le formulaire de candidature a pris environ 10 secondes pour extraire, traiter et rendre le PDF traduit. Le temps de traitement pour un document texte lourd tel que la Déclaration d’indépendance PDF a été inférieur à une minute.

Coût

Avec Amazon Textract, vous payez au fur et à mesure en fonction du nombre de pages et d’images traitées. Avec Amazon Translate, vous payez au fur et à mesure en fonction du nombre de caractères de texte traités. Consultez les tarifs d’Amazon Textract et les tarifs d’Amazon Translate pour connaître les coûts réels.

Conclusion

Cet article a montré comment utiliser Amazon Textract et Amazon Translate pour générer des documents PDF traduits tout en conservant la structure du document d’origine. Vous pouvez éventuellement post-traiter les résultats d’Amazon Textract pour améliorer la qualité de la traduction, par exemple les mots extraits peuvent être soumis à des vérifications orthographiques basées sur l’apprentissage automatique telles que SymSpell pour la validation des données, ou des algorithmes de regroupement peuvent être utilisés pour préserver l’ordre de lecture. Vous pouvez également utiliser Amazon Augmented AI (Amazon A2I) pour créer des flux de travail de révision humaine où vous pouvez utiliser votre propre main-d’œuvre privée pour examiner les documents PDF d’origine et traduits afin de fournir plus de précision et de contexte. Consultez les ressources suivantes pour commencer : Conception de flux de travail de révision humaine avec Amazon Translate et Amazon Augmented AI et Construction d’un flux de travail de traduction de documents multilingues avec personnalisation spécifique au domaine et spécifique à la langue.

We will continue to update IPGirl; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AI

Meilleurs cours de Tableau (2023)

Ces cours Tableau auto-gérés et dirigés par l'industrie répondent aux besoins de différents apprenants et application...

AI

Comment acheter Solana (SOL)

Solana (SOL), une blockchain et une cryptomonnaie de quatrième génération, se distingue par son utilisation d'une inf...

Technologie de l'IA

Coût du développement de l'IA conversationnelle dans le système bancaire en 2023

Alors que les canaux numériques continuent de se multiplier et que les attentes des clients augmentent, les instituti...

AI

Cryptographie Post-Quantique avec Python et Linux

Si l'on croit Edward Snowden, le chiffrement est la seule véritable protection contre la surveillance [1]. Cependant,...

AI

Top 10 Vulnérabilités LLM

Les attaquants exploitent les vulnérabilités de LLM pour utiliser des systèmes de PNL à des fins malveillantes. Décou...

AI

Révolutionner la vision par ordinateur Avancées, défis et orientations futures

Découvrez les avancées, les défis et les tendances futures de la vision par ordinateur. Plongez dans l'apprentissage ...