我正在尝试在 AWS Bedrock 上使用 Claude 3 API 来对可能附有 pdf 或图像以及文本的帖子进行摘要。
def invoke_claude_3_with_text(self, prompt):
client = self.bedrock_client
model_id = "anthropic.claude-3-sonnet-20240229-v1:0"
try:
response = client.invoke_model(
modelId=model_id,
body=json.dumps(
{
"anthropic_version": "bedrock-2023-05-31",
"max_tokens": 2048,
"messages": [
{
"role": "user",
"content": [{"type": "text", "text": prompt}],
}
],
}
),
)
# Process and print the response
result = json.loads(response.get("body").read())
input_tokens = result["usage"]["input_tokens"]
output_tokens = result["usage"]["output_tokens"]
output_list = result.get("content", [])
我正在使用上面的代码进行文本摘要并且正在按预期工作。甚至图像的前进方向也很明确,我将对其进行 base64 编码并发送到 Claude API。
我不太清楚如何获取 pdf 文档的摘要。我是否必须先从 pdf 中提取文本并将其发送给克劳德,还是有其他直接的方法,例如它如何处理图像?如果我的 pdf 中有图像怎么办?
是的,您需要先从 PDF 中提取文本,然后再将其传递给 Claude 3 API 进行摘要。如果 PDF 包含图像,您可能需要执行其他处理(例如 OCR)以将该信息包含在摘要中。
所以流程如下:
您可以使用
PyPDF2
库从 PDF 中提取文本。
pip install PyPDF2
您可以参考示例代码
def extract_text_from_pdf(self, pdf_path):
text = ""
try:
with open(pdf_path, "rb") as file:
pdf_reader = PyPDF2.PdfFileReader(file)
num_pages = pdf_reader.numPages
for page_num in range(num_pages):
page = pdf_reader.getPage(page_num)
text += page.extractText()
return text
except Exception as e:
print("Error extracting text from PDF:", e)
return None