0
Azure StorageでPDFからデータを抽出する必要があります(フォルダ内で解析して分離するには遅すぎます)。 1000個のPDFをダウンロードするのに11分かかるだけです。より速くダウンロードする方法や、ダウンロードすることなくデータを移動/抽出する方法はありますか? Blobをダウンロードするのにget_blob_to_path
、TXTにPDFを変換するのにslate3k
を使用しています。Pythonを使用してAzureからBLOBをダウンロード
コード(申し訳ありませんが、いくつかの単語はポルトガル語である):
block_service = BlockBlobService(account_name=ACCOUNT_NAME, account_key=ACCOUNT_KEY)
generator = block_service.list_blobs(CONTAINER_NAME, prefix="trt2", num_results=1000, timeout=60)
for blob in generator:
path = "temp/" + blob.name.split("/")[-1]
block_service.get_blob_to_path(CONTAINER_NAME, blob.name, path, timeout=60)
with open(path, 'rb') as f:
doc = slate3k.PDF(f)
f.close()
text_complete = ''
for item in doc:
item_pat = ''
for line in item.split('\n'):
item_pat += line + '\n'
text_complete += item_pat
text_complete = text_complete.strip().lower()
if text_complete.find("acórdão") >= 0 and text_complete.find("acordam os magistrados") >= 0:
print("Encontrei Acórdão")
print("Arquivo "+path)
block_service.create_blob_from_path(CONTAINER_NAME, "trt2/Acordao/" + arquivo, path)
block_service.delete_blob(CONTAINER_NAME, blob.name)
os.remove(path)
elif text_complete.find("despacho") >= 0 and text_complete.find("conclusão") < 0 and text_complete.find("embargo") < 0 and \
text_complete.find("ata de audiência") < 0 and text_complete.find("termo de audiência") < 0 and \
text_complete.find("v o t o") < 0 and text_complete.find("certidão") < 0 :
print("Encontrei Despacho")
print("Arquivo "+path)
block_service.create_blob_from_path(CONTAINER_NAME, "trt2/Despacho/" + arquivo, path)
block_service.delete_blob(CONTAINER_NAME, blob.name)
os.remove(path)
elif text_complete.find("sentença") >= 0 and text_complete.find("relatório") >= 0 and \
text_complete.find("acordam") < 0 and text_complete.find("primeira testemunha") < 0 and \
text_complete.find("provas a produzir") < 0 and text_complete.find("embargo") < 0 and \
text_complete.find("voto") < 0:
print("Encontrei Sentença")
print("Arquivo "+path)
block_service.create_blob_from_path(CONTAINER_NAME, "trt2/Sentenca/" + arquivo, path)
block_service.delete_blob(CONTAINER_NAME, blob.name)
os.remove(path)
else:
block_service.create_blob_from_path(CONTAINER_NAME, "trt2/Outros/" + arquivo, path)
block_service.delete_blob(CONTAINER_NAME, blob.name)
os.remove(path)
これまでに書いたコードを投稿できますか? – PrestonM
質問が更新されました –
ボトルネックはどこですか?これらの1000個のpdfに80GBのデータが含まれている場合、その2 MBの長さがあなたのダウンロード速度に対してサイズをチェックし、それが問題であるかどうかを確認すれば、10分で問題ありません。その場合は、データボリュームをアップグレードまたは最小化しようとする。ワイヤーを介して転送されるデータを減らすために、数百万のpdfs 1000sを一度に(または7z)圧縮します。 wlanを使用している場合は、LAN接続を取得してそのボトルネックを取り除き、1000mbit LANにアップグレードしてください...分析し、修正してください。 –