Faites-vous la reconnaissance optique de caractères (OCR)? Avec la technologie permettant de lire les informations textuelles sur l'image, elles deviennent visibles à divers endroits. De plus, il est de plus en plus facile d'utiliser la technologie OCR dans GCP afin que les gens ordinaires puissent l'utiliser.
J'essayais donc de lire les informations textuelles dans le PDF à l'aide de l'API Cloud Vision de GCP, mais je sentais que le document officiel était un peu difficile à comprendre (?), Alors j'aimerais le résumer ici au lieu d'un mémo.
J'ai senti que divers points importants avaient été omis dans le document ci-dessus, donc c'était un peu difficile pour moi en tant que débutant.
Mac OS Mojave
Python 3.7
Je ne connais pas encore la facture d'avril, mais je pense qu'elle est probablement faible. J'utilise également les crédits gratuits que j'obtiens pour la première fois, je vais donc les mettre à jour dès que je les comprendrai.
Activez l'API Cloud Vision.
Sélectionnez une bibliothèque parmi les API et les services, recherchez et activez l'API Cloud Vision.
Sélectionnez un compte de service dans IAM et Administration et créez un nouveau compte de service.
Vous pouvez créer un fichier json clé à partir de la commande suivante Create Service Account
.
Vous pouvez maintenant créer un fichier de clé contenant la clé publique et ainsi de suite. Vous déplacerez ce fichier clé vers votre fichier de travail ultérieurement.
Sélectionnez un navigateur dans Stockage. Cela vous mènera au navigateur de stockage, cliquez sur Créer un compartiment.
Créez un nouveau bucket et téléchargez le fichier PDF que vous souhaitez OCR. Mon nom de bucket cette fois est ʻenvironment-engineering-pdf-bucket-1 et j'ai téléchargé
scan-001.pdf`.
Nous allons également créer un autre bucket pour stocker les informations de texte lu du fichier pdf. Je l'ai nommé «cr-result-bucket-qiita».
Les trois suivants sont obligatoires, alors importons-les. Vous pouvez également utiliser virtualenv.
pip install google-cloud-vision
pip install google-cloud-storage
pip install protobuf
https://pypi.org/project/google-cloud-storage/ https://pypi.org/project/google-cloud-vision/ https://pypi.org/project/protobuf/
import os
import json
import re
from google.cloud import vision
from google.cloud import storage
from google.protobuf import json_format
#Veuillez changer ici pour votre propre uri ainsi que le vôtre
gcs_source_uri = "gs://environment-engineering-pdf-bucket-1/scan-001.pdf"
gcs_destination_uri = "gs://ocr-result-bucket-qiita"
#Veuillez changer le nom du bucket ici pour le vôtre
bucket_name = "ocr-result-bucket-qiita"
#Veuillez changer le fichier de clé ici pour le vôtre
#N'oubliez pas de mettre le fichier de clé JSON dans le même répertoire!
credential_path = 'engaged-symbol-274611-192d61800d05.json'
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = credential_path
mime_type = 'application/pdf'
batch_size = 2
client = vision.ImageAnnotatorClient()
feature = vision.types.Feature(
type=vision.enums.Feature.Type.DOCUMENT_TEXT_DETECTION)
gcs_source = vision.types.GcsSource(uri=gcs_source_uri)
input_config = vision.types.InputConfig(
gcs_source=gcs_source, mime_type=mime_type)
gcs_destination = vision.types.GcsDestination(uri=f"{gcs_destination_uri}/")
output_config = vision.types.OutputConfig(
gcs_destination=gcs_destination, batch_size=batch_size)
async_request = vision.types.AsyncAnnotateFileRequest(
features=[feature], input_config=input_config,
output_config=output_config)
operation = client.async_batch_annotate_files(
requests=[async_request])
print('Waiting for the operation to finish.')
operation.result(timeout=180)
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket_name)
output = blob_list[0]
json_string = output.download_as_string()
response = json_format.Parse(
json_string, vision.types.AnnotateFileResponse())
# The actual response for the first page of the input file.
first_page_response = response.responses[0]
annotation = first_page_response.full_text_annotation
print(u'Full text:\n{}'.format(
annotation.text))
J'ai essayé l'OCR de l'image pdf suivante.
Ensuite, le titre a été affiché dans le terminal comme suit.
Gentosha Bunko
Chinois à Kyoto
Naomi Kang
Cependant, il échoue sur les pages contenant les caractères écrits suivants. «Gourmet» est reconnu comme «Kamako» et «Niniku no» est absent de «Niniku na» et «».
production:
table des matières
《Kamako》
"Danse"
Kashinnosu
C'est de l'ail
Sac enfant 4
Poisson de chapitre(Log Town Seven Pine)|
34
Aile de poisson à trois côtés
Buan(Shimogamo)
De peau de sésame
Mizusako
Nombres(Temple Kodoji)
04
Comme une valve parent-enfant
Phénix
Fuyoen(Kawaramachi Kajo)
La personne
Si vous pouvez sortir ceci au format ʻepub` etc., vous pouvez également le convertir au format mobi et le lire avec Kindle! Je ne sais pas combien cela coûtera. .. ..
Recommended Posts