精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MinerU部署實踐:從零開始搭建你的專屬PDF解析服務

人工智能
我將詳細介紹MinerU 的私有化部署流程、PDF 解析服務開發,以及如何通過 API 封裝實現便捷的文檔處理功能。

在多模態RAG(Retrieval-Augmented Generation)系統中,PDF文件的高效、安全解析與處理是實現高質量知識檢索和生成的關鍵環節。PDF文件通常包含豐富的文本、圖像和表格信息,這些多模態數據的有效提取和整合對于提升RAG系統的性能至關重要。然而,傳統的PDF解析工具往往存在解析精度不足、無法處理復雜格式(如圖像和表格)等問題,尤其是在涉及私密文檔時,數據安全和隱私保護也是一大挑戰。

今天,我將詳細介紹MinerU 的私有化部署流程、PDF 解析服務開發,以及如何通過 API 封裝實現便捷的文檔處理功能。

1、簡介

MinerU是一款將PDF轉化為機器可讀格式的工具(如markdown、json),可以很方便地抽取為任意格式。 主要具有以下功能:

  • 刪除頁眉、頁腳、腳注、頁碼等元素,確保語義連貫
  • 輸出符合人類閱讀順序的文本,適用于單欄、多欄及復雜排版
  • 保留原文檔的結構,包括標題、段落、列表等
  • 提取圖像、圖片描述、表格、表格標題及腳注
  • 自動識別并轉換文檔中的公式為LaTeX格式
  • 自動識別并轉換文檔中的表格為HTML格式
  • 自動檢測掃描版PDF和亂碼PDF,并啟用OCR功能
  • OCR支持84種語言的檢測與識別
  • 支持多種輸出格式,如多模態與NLP的Markdown、按閱讀順序排序的JSON、含有豐富信息的中間格式等
  • 支持多種可視化結果,包括layout可視化、span可視化等,便于高效確認輸出效果與質檢
  • 支持純CPU環境運行,并支持 GPU(CUDA)/NPU(CANN)/MPS 加速
  • 兼容Windows、Linux和Mac平臺

項目地址:https://github.com/opendatalab/MinerU

說明文檔:https://mineru.readthedocs.io/en/latest/index.html

2、私有化部署

MinerU官方提供的API,但是其API KEY需要14天要更換一次,并且在數據安全和隱私保護方面也很難控制。下面是對MinerU的私有化部署介紹:

安裝magic-pdf

conda create -n mineru pythnotallow=3.10 
conda activate mineru
pip install -U"magic-pdf[full]"-i https://mirrors.aliyun.com/pypi/simple

模型權重下載

方法一:從 Hugging Face 下載模型

使用python腳本 從Hugging Face下載模型文件

pip install huggingface_hub
wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/scripts/download_models_hf.py -O download_models_hf.py
python download_models_hf.py

python腳本會自動下載模型文件并配置好配置文件中的模型目錄。也可以將MinerU代碼clone到本地,運行download_models_hf代碼

方法二:從 ModelScope 下載模型

pip install modelscope
wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/scripts/download_models.py -O download_models.py
python download_models.py

也可以將MinerU代碼clone到本地,運行download_models代碼,可以通過配置一些參數,將模型下載到制定文件夾。

詳細參考如何下載模型文件。

修改配置文件以進行額外配置

完成下載模型權重文件步驟后,腳本會自動生成用戶目錄下的magic-pdf.json文件,并自動配置默認模型路徑。 可以在【用戶目錄】下找到magic-pdf.json文件。

windows的用戶目錄為 "C:\Users\用戶名", linux用戶目錄為 "/home/用戶名", macOS用戶目錄為 "/Users/用戶名"

可以修改該文件中的部分配置實現功能的開關,如表格識別功能:

如json內沒有如下項目,請手動添加需要的項目,并刪除注釋內容(標準json不支持注釋)

{
  // other config
  "layout-config": {
    "model": "doclayout_yolo"
  },
  "formula-config": {
    "mfd_model": "yolo_v8_mfd",
    "mfr_model": "unimernet_small",
    "enable": true // 公式識別功能默認是開啟的,如果需要關閉請修改此處的值為"false"
  },
  "table-config": {
    "model": "rapid_table",
    "sub_model": "slanet_plus",
    "enable": true, // 表格識別功能默認是開啟的,如果需要關閉請修改此處的值為"false"
    "max_time": 400
  }
}

3、解析代碼

process_pdf是核心解析函數,主要功能包括:

  • 自動識別PDF類型(普通文本PDF或掃描版PDF)
  • 提取文本內容和圖片資源
  • 生成Markdown格式的輸出
  • 可選生成可視化分析結果

參數

參數

類型

默認值

描述

pdf_file_name

str

要解析的PDF文件路徑

output_dir

str

"output"

輸出文件的主目錄

image_subdir

str

"images"

存放圖片的子目錄名稱

simple_output

bool

True

是否使用簡單輸出模式(True時只輸出Markdown和內容列表)

代碼

import os
from magic_pdf.data.data_reader_writer import FileBasedDataWriter, FileBasedDataReader
from magic_pdf.data.dataset import PymuDocDataset
from magic_pdf.model.doc_analyze_by_custom_model import doc_analyze
from magic_pdf.config.enums import SupportedPdfParseMethod




def process_pdf(pdf_file_name, output_dir="output", image_subdir="images", simple_output=True):
    """
    處理PDF文件,將其轉換為Markdown格式并保存相關資源
    :param pdf_file_name: PDF文件名
    :param output_dir: 輸出目錄,默認為'output'
    :param image_subdir: 圖片子目錄名,默認為'images'
    :param simple_output: 是否使用簡單輸出模式,默認為False
    """
    # 獲取不帶后綴的文件名
    name_without_suff = os.path.splitext(os.path.basename(pdf_file_name))[0]
    # 創建輸出子目錄名
    output_subdir = name_without_suff
    # 構建圖片目錄和markdown目錄的路徑
    local_image_dir = os.path.join(output_dir, output_subdir, image_subdir)
    local_md_dir = os.path.join(output_dir, output_subdir)
    # 創建必要的目錄
    os.makedirs(local_image_dir, exist_ok=True)
    os.makedirs(local_md_dir, exist_ok=True)
    # 創建文件寫入器
    image_writer, md_writer = FileBasedDataWriter(local_image_dir), FileBasedDataWriter(local_md_dir)
    # 創建文件讀取器并讀取PDF文件
    reader1 = FileBasedDataReader("")
    pdf_bytes = reader1.read(pdf_file_name)
    # 創建數據集對象
    ds = PymuDocDataset(pdf_bytes)
    # 根據PDF類型選擇處理方式
    if ds.classify() == SupportedPdfParseMethod.OCR:
        # 使用OCR模式處理
        infer_result = ds.apply(doc_analyze, ocr=True)
        pipe_result = infer_result.pipe_ocr_mode(image_writer)
    else:
        # 使用文本模式處理
        infer_result = ds.apply(doc_analyze, ocr=False)
        pipe_result = infer_result.pipe_txt_mode(image_writer)
    # 構建markdown文件的完整路徑
    md_file_path = os.path.join(os.getcwd(), local_md_dir, f"{name_without_suff}.md")
    abs_md_file_path = os.path.abspath(md_file_path)
    if simple_output:
        # 簡單輸出模式:只輸出markdown和內容列表
        pipe_result.dump_md(md_writer, f"{name_without_suff}.md", os.path.basename(local_image_dir))
        pipe_result.dump_content_list(md_writer, f"{name_without_suff}_content_list.json",
                                      os.path.basename(local_image_dir))
        return abs_md_file_path
    else:
        # 完整輸出模式:輸出所有內容
        pipe_result.dump_md(md_writer, f"{name_without_suff}.md", os.path.basename(local_image_dir))
        pipe_result.dump_content_list(md_writer, f"{name_without_suff}_content_list.json",
                                      os.path.basename(local_image_dir))
    # 生成可視化文件
    infer_result.draw_model(os.path.join(local_md_dir, f"{name_without_suff}_model.pdf"))
    pipe_result.draw_layout(os.path.join(local_md_dir, f"{name_without_suff}_layout.pdf"))
    pipe_result.draw_span(os.path.join(local_md_dir, f"{name_without_suff}_spans.pdf"))
    return abs_md_file_path


if __name__ == "__main__":
    # 指定要處理的PDF文件名
    pdf_file_name = "/path/to/demo1.pdf"
    # 處理PDF文件并獲取生成的markdown文件路徑
    md_file_path = process_pdf(pdf_file_name, output_dir="/path/to/output", simple_output=False)
    # 打印生成的markdown文件路徑
    print(md_file_path)

輸出文件結構

output/
  ├── [PDF文件名]/
  │   ├── images/            # 存放提取的圖片
  │   ├── [PDF文件名].md     # 生成的Markdown文件
  │   ├── [PDF文件名]_content_list.json  # 內容列表JSON文件
  │   ├── [PDF文件名]_model.pdf   # 模型可視化結果(完整模式)
  │   ├── [PDF文件名]_layout.pdf  # 布局可視化結果(完整模式)
  │   └── [PDF文件名]_spans.pdf   # 文本塊可視化結果(完整模式)

4、API封裝

API 端點

  • URL:http://[host]:6601/process_pdf
  • 方法: POST
  • 內容類型: multipart/form-data

請求參數

參數:pdf_file

類型:文件

描述:要解析的PDF文件

響應

成功: 返回包含所有解析結果的ZIP文件

失敗: 返回JSON格式的錯誤信息

代碼

from flask import Flask, request, send_file, jsonify
import os
import shutil
import zipfile
from scripts.mineru_process_pdf import process_pdf
app = Flask(__name__)
def create_zip_from_directory(directory_path, zip_file_path):
    with zipfile.ZipFile(zip_file_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
        for root, dirs, files in os.walk(directory_path):
            for file in files:
                file_path = os.path.join(root, file)
                arcname = os.path.relpath(file_path, directory_path)
                zipf.write(file_path, arcname)
@app.route('/process_pdf', methods=['POST'])
def process_pdf_api():
    if 'pdf_file' not in request.files:
        return jsonify({'error': 'No file part'}), 400
    file = request.files['pdf_file']
    if file.filename == '':
        return jsonify({'error': 'No selected file'}), 400
    # Save the uploaded file to a temporary location
    input_pdf_path = os.path.join('temp', file.filename)
    os.makedirs('temp', exist_ok=True)
    file.save(input_pdf_path)
    try:
        # Process the PDF file
        output_dir = '/path/to/output'
        markdown_file_path = process_pdf(input_pdf_path, output_dir=output_dir, simple_output=False)
        # Create a zip file from the output directory
        temp_path = '/path/to/temp'
        os.makedirs(temp_path, exist_ok=True)
        zip_file_path = os.path.join(temp_path, f"{os.path.splitext(file.filename)[0]}.zip")
        create_zip_from_directory(os.path.join(output_dir, os.path.splitext(file.filename)[0]), zip_file_path)
        # Send the zip file as a response
        return send_file(zip_file_path, as_attachment=True)
    except Exception as e:
        return jsonify({'error': str(e)}), 500
    finally:
        # Clean up temporary files
        if os.path.exists(input_pdf_path):
            os.remove(input_pdf_path)
        if os.path.exists(zip_file_path):
            os.remove(zip_file_path)
        if os.path.exists(output_dir):
            shutil.rmtree(output_dir)
if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=6601)

5、調用示例

下面對該解析服務API提供了三種調用示例,可以根據需要選擇使用:

代碼

import requests
import os
import zipfile
import io


def parse_pdf_api_to_path(pdf_file_path, output_dir):
    url = "http://localhost:6601/process_pdf"
    # 確保輸出目錄存在
    os.makedirs(output_dir, exist_ok=True)
    # 獲取 PDF 文件的基礎名稱(不帶擴展名)
    base_filename = os.path.splitext(os.path.basename(pdf_file_path))[0]
    with open(pdf_file_path, 'rb') as pdf_file:
        files = {'pdf_file': pdf_file}
        response = requests.post(url, files=files)
    if response.status_code == 200:
        # 保存返回的 zip 文件到指定目錄,使用與 PDF 相同的基礎文件名
        output_zip_path = os.path.join(output_dir, f'{base_filename}.zip')
        with open(output_zip_path, 'wb') as f:
            f.write(response.content)
        print(f"Test passed: Received zip file and saved to {output_zip_path}.")
    else:
        print(f"Test failed: {response.status_code} - {response.json()}")


def parse_pdf_api_to_content(pdf_file_path):
    url = "http://localhost:6601/process_pdf"
    # 獲取 PDF 文件的基礎名稱(不帶擴展名)
    base_filename = os.path.splitext(os.path.basename(pdf_file_path))[0]
    with open(pdf_file_path, 'rb') as pdf_file:
        files = {'pdf_file': pdf_file}
        response = requests.post(url, files=files)
    if response.status_code == 200:
        # 返回壓縮包內容
        print(f"Request successful: Received zip file for {base_filename}.")
        return response.content
    else:
        error_message = f"Request failed: {response.status_code} - {response.json()}"
        print(error_message)
        raise Exception(error_message)


def save_zip_content_to_directory(zip_content, output_dir):
    # 確保輸出目錄存在
    os.makedirs(output_dir, exist_ok=True)
    # 使用 zipfile 模塊解壓縮內容
    with zipfile.ZipFile(io.BytesIO(zip_content)) as z:
        z.extractall(output_dir)
    print(f"Files extracted to {output_dir}")


def save_zip_and_content_to_directory(zip_content, output_dir, zip_filename):
    # 確保輸出目錄存在
    os.makedirs(output_dir, exist_ok=True)
    # 保存壓縮包到指定目錄
    zip_path = os.path.join(output_dir, zip_filename)
    with open(zip_path, 'wb') as f:
        f.write(zip_content)
    print(f"Zip file saved to {zip_path}")
    # 使用 zipfile 模塊解壓縮內容
    with zipfile.ZipFile(io.BytesIO(zip_content)) as z:
        z.extractall(output_dir)
    print(f"Files extracted to {output_dir}")

直接解壓并保存到指定目錄

pdf_file_path = "/path/to/your.pdf"
output_unzip_dir = "/path/to/output/dir"
# 獲取壓縮包內容
zip_content = parse_pdf_api_to_content(pdf_file_path)
# 解壓并保存到指定目錄
save_zip_content_to_directory(zip_content, output_unzip_dir)

保存壓縮包到指定目錄并解壓

pdf_file_path = "/path/to/your.pdf"
output_unzip_dir = "/path/to/output/dir"
# 獲取壓縮包內容
zip_content = parse_pdf_api_to_content(pdf_file_path)
# 定義壓縮包文件名
zip_filename = os.path.splitext(os.path.basename(pdf_file_path))[0] + ".zip"
# 保存壓縮包并解壓
save_zip_and_content_to_directory(zip_content, output_unzip_dir, zip_filename)

將解析內容保存到本地

pdf_file_path = "/path/to/your.pdf"
output_dir = "/path/to/output/dir"
# 直接調用API并將結果保存到指定目錄
parse_pdf_api_to_path(pdf_file_path, output_dir)


責任編輯:龐桂玉 來源: 小白學AI算法
相關推薦

2024-05-15 14:29:45

2017-09-13 14:01:51

數據庫MongoDB數據庫即服務

2015-10-15 14:16:24

2022-09-01 10:46:02

前端組件庫

2016-11-02 14:09:13

搭建論壇Web服務器網關接口

2015-11-17 16:11:07

Code Review

2018-04-18 07:01:59

Docker容器虛擬機

2019-01-18 12:39:45

云計算PaaS公有云

2016-11-02 13:33:43

2024-12-06 17:02:26

2020-07-02 15:32:23

Kubernetes容器架構

2024-01-16 11:08:56

2023-12-27 08:47:41

PrometheusLinux架構

2016-11-02 14:18:45

搭建論壇Flask框架

2025-04-17 09:00:00

2016-08-12 14:18:49

Javascriptnode命令行

2021-05-17 22:40:56

區塊鏈比特幣技術

2011-04-19 13:32:01

jQueryjavascript

2023-10-27 11:01:31

網絡性能VLAN

2016-10-19 08:36:51

點贊
收藏

51CTO技術棧公眾號

国产精品入口免费视频一| 日韩www在线| 国产精品伊人日日| 第一次破处视频| 主播大秀视频在线观看一区二区| 国产91高潮流白浆在线麻豆| 97福利一区二区| 男人的天堂官网| 欧美日韩黄色| 色综合天天综合| 综合久久国产| 天堂成人在线观看| 日本不卡一区二区三区高清视频| 日韩av最新在线观看| 色悠悠久久综合网| 国产永久免费高清在线观看 | 精品日本一线二线三线不卡| 色姑娘综合网| 亚洲高清视频在线播放| 欧美在线网址| 亚洲福利视频网站| 污视频网址在线观看| av资源在线看片| 国产欧美视频在线观看| 国产超碰91| 一道本在线视频| 国产偷自视频区视频一区二区| 亚洲精品www久久久| 男人操女人免费软件| 免费在线看v| 国产91精品精华液一区二区三区 | 开心色怡人综合网站| 国产精品无码久久久久成人app| 久久久久久美女精品| 亚洲午夜精品久久久久久久久久久久 | 亚洲欧美视频在线观看| 欧日韩一区二区三区| 亚洲男人第一天堂| 国产一区二区精品久久| 国产成人在线视频| 国产69精品久久久久久久久久| 香蕉久久夜色精品国产更新时间| 在线精品亚洲一区二区不卡| 久久久久免费看黄a片app| 成人免费观看视频大全| 国产精品天干天干在观线| 欧美国产一二三区| 国产精品一级视频| 99精品99| 欧美激情亚洲一区| 九九热只有精品| 欧美不卡视频| 欧美黑人性猛交| 中文字幕在线观看成人| 中文字幕亚洲精品乱码| 久久伊人免费视频| 动漫性做爰视频| 中文字幕av亚洲精品一部二部| 精品一区二区三区四区| 欧美日韩中文不卡| 日本精品久久| 宅男在线国产精品| 午夜影院免费观看视频| 久久久久毛片免费观看| 在线观看日韩电影| 国产高清视频网站| 色999久久久精品人人澡69 | 免费看一级视频| 亚洲综合精品| 国产精品99久久99久久久二8| 久久亚洲AV无码| 欧美激情亚洲| 久久久久久久久久久成人| 奇米网一区二区| 97精品国产| 美女啪啪无遮挡免费久久网站| 新91视频在线观看| 欧美一站二站| 久久综合五月天| 国产真实夫妇交换视频| 国产日韩精品视频一区二区三区| 欧美成人小视频| 国产一级片网址| 亚洲影院免费| 国产欧美日韩中文| 男操女视频网站| 免费在线亚洲| 国产精品一区二区三区成人| 国产成人久久精品77777综合 | 亚洲柠檬福利资源导航| 黄色一级大片免费| 在线毛片观看| 7799精品视频| 国产福利在线观看视频| 日韩成人精品一区二区| 久久99久久亚洲国产| а天堂中文在线资源| 精品毛片免费观看| 久久综合九色九九| 91丝袜一区二区三区| 狠狠色狠狠色综合日日91app| 国产欧美精品日韩| 综合久久中文字幕| 日韩福利视频导航| 国产精品91在线| 国内av在线播放| 国产成人无遮挡在线视频| 欧美一区二区三区电影在线观看| 日韩私人影院| 亚洲视频在线一区二区| 欧美视频在线播放一区| 二区三区精品| 欧美一区二区日韩| 91网址在线观看精品| 亚州综合一区| 欧美激情免费在线| 伊人精品在线视频| 91首页免费视频| 蜜桃网站在线观看| av亚洲一区| 亚洲美女性视频| 欧美性受xxxx黑人| 欧美a级片视频| 日本电影亚洲天堂| 中文字幕在线播出| 91网上在线视频| 国产成人艳妇aa视频在线| 亚洲GV成人无码久久精品| 久久精品国产一区二区| 欧美一区二区三区四区夜夜大片| √新版天堂资源在线资源| 国产精品免费丝袜| 日韩av资源在线| 欧美色资源站| 国自在线精品视频| 最近国语视频在线观看免费播放| 国产自产2019最新不卡| 天天好比中文综合网| 小视频免费在线观看| 在线观看精品一区| 国精产品一区一区三区免费视频 | 国产欧美成人| 国产激情美女久久久久久吹潮| 日本一级在线观看| 天天操天天色综合| 日本少妇xxxx| 一本一本久久| 韩国成人一区| 国产乱色在线观看| 欧美日韩国产综合久久| 黄色免费一级视频| 久久精品国产精品亚洲红杏| 亚洲高清精品中出| 国产人妖一区| www日韩中文字幕在线看| 在线观看黄色网| 国产精品日产欧美久久久久| 在线观看免费成人av| 日本a口亚洲| 国产精品视频在线播放| 欧美r级在线| 欧美丰满高潮xxxx喷水动漫| 日本中文在线视频| 国产麻豆91精品| 日韩videos| 精品肉辣文txt下载| yellow中文字幕久久| 国产视频www| 亚洲一级在线观看| 久久精品亚洲天堂| 欧美日韩亚洲一区| 国产一区二区在线观看免费播放| 国产午夜精品久久久久免费视| 日韩欧美黄色动漫| 色噜噜噜噜噜噜| 国产美女视频91| 热re99久久精品国产99热| 波多野结衣乳巨码无在线观看| 欧美精品黑人性xxxx| 可以直接看的黄色网址| 不卡av在线免费观看| 男同互操gay射视频在线看| 成人在线视频观看| 欧美成人免费大片| 丝袜视频国产在线播放| 欧美三级韩国三级日本三斤| 久草网站在线观看| 久久久无码精品亚洲日韩按摩| www插插插无码视频网站| 亚洲精品国产精品粉嫩| 91精品久久久久久久久| 国产在线一二三区| 欧美一级高清片| 91九色丨porny丨肉丝| 日本一区二区高清| 亚洲图片欧美另类| 日产国产欧美视频一区精品| 亚洲图片都市激情| 欧美日韩导航| 91av视频在线免费观看| 在线免费观看黄色av| 亚洲精品一区二区三区福利| 中文字幕在线日本| 亚洲自拍偷拍图区| 日韩欧美在线视频播放| 成人av网站免费观看| 日本一二区免费| 国产精品人人爽人人做我的可爱| 精品一区二区日本| 国产精品一区二区三区www| 欧美一区二区三区免费视| 黄色免费在线观看网站| 亚洲精品视频免费| 中文永久免费观看| 婷婷中文字幕一区三区| 亚洲一二三在线观看| 国产日韩精品视频一区| www国产视频| 国产福利一区二区三区视频在线| 免费在线黄网站| 爽成人777777婷婷| 欧美午夜精品理论片a级大开眼界| 中文.日本.精品| 97在线视频免费| 羞羞视频在线免费国产| 丝袜一区二区三区| 国产免费视频在线| 日韩毛片在线观看| 天天综合永久入口| 日韩欧美一区电影| 99国产在线播放| 亚洲一区二区视频在线观看| 亚洲欧美综合7777色婷婷| 久久超碰97人人做人人爱| 黄色一级一级片| 99国产精品久久久久久久| 国产成人生活片| 亚洲一区色图| 欧美性受xxxx黑人猛交88| 欧美精品久久久久久| 日本日本精品二区免费| 免费观看久久av| 鲁丝一区二区三区免费| 婷婷五月色综合香五月| 狠狠色噜噜狠狠色综合久| 国产经典一区| 国产精品主播视频| 97久久网站| 成人观看高清在线观看免费| 国产精品第一国产精品| 国产精品伦子伦免费视频| 欧美日韩尤物久久| 国产伦精品免费视频| 日韩三级成人| 亚洲综合色激情五月| 国产专区精品| 99久久精品久久久久久ai换脸| 日本电影在线观看网站| 精品欧美久久久| 午夜精品久久久久久久蜜桃| 色久综合一二码| 性高潮视频在线观看| 欧美日韩黄色一区二区| 天天操中文字幕| 色偷偷成人一区二区三区91 | 人人妻人人做人人爽| 伊人久久亚洲美女图片| 中文字幕无码精品亚洲35| 爽爽淫人综合网网站| 天天爽夜夜爽一区二区三区| 精品一区二区三区免费毛片爱| 久久久久国产精品熟女影院| 日本aⅴ亚洲精品中文乱码| 婷婷六月天在线| 韩国成人在线视频| 少妇搡bbbb搡bbb搡打电话| 91亚洲精华国产精华精华液| 国内精品国产三级国产aⅴ久| 蜜臀av一级做a爰片久久| 中文字幕一区久久| 丰满放荡岳乱妇91ww| 国产在线视频三区| 91在线视频播放| 99久久久无码国产精品不卡| 一区二区视频在线| 久久免费激情视频| 91精品国产综合久久蜜臀| 黄色一级大片在线免费看国产| 亚洲一区成人在线| 蜜臀99久久精品久久久久小说| 黑人巨大精品欧美一区二区一视频 | 中文字幕久精品免| 99精品久久久| 色www免费视频| 成人动漫一区二区| 青青草华人在线视频| 亚洲图片一区二区| 在线免费观看日韩视频| 亚洲国产精品va在线看黑人 | va亚洲va日韩不卡在线观看| 国产精品20p| 亚洲自拍欧美精品| 国产精彩视频在线| 午夜不卡av免费| 一级特黄aaa大片在线观看| 亚洲国产精品va在看黑人| 天堂av一区二区三区| 日韩在线小视频| 免费a在线看| 91av网站在线播放| 亚洲三区欧美一区国产二区| 亚洲不卡一卡2卡三卡4卡5卡精品| 国产成人1区| 中文字幕无码精品亚洲资源网久久| 亚洲毛片在线| 永久免费黄色片| 成人性生交大片免费看视频在线| 国产成人av无码精品| 亚洲视频综合在线| 中文字幕在线观看1| 日韩一区二区三区在线| 国产精品久久一区二区三区不卡| 日韩中文在线观看| 精品3atv在线视频| 久久久久久久久久久久久久一区 | 久久高清一区| 波多野结衣加勒比| 一区二区三区四区在线免费观看| 国产成人无码精品| 日韩欧美123| gogogogo高清视频在线| 97视频在线观看免费| 国产成人免费9x9x人网站视频| 91精品综合视频| 欧美一区二区三| 欧美性猛交xxx乱久交| 久久久三级国产网站| 精品欧美一区二区久久久久| 欧美另类高清视频在线| 性生活视频软件| 少妇高潮 亚洲精品| 在线观看免费黄色| 免费99精品国产自在在线| 成人国产精品入口免费视频| 欧美精品国产精品久久久 | 色av成人天堂桃色av| www.日韩一区| 亚洲天堂成人在线| jk漫画禁漫成人入口| 久久久久综合一区二区三区| 影音先锋亚洲一区| 特级西西人体4444xxxx| 精品高清一区二区三区| 视频一区二区在线播放| 久久99精品国产99久久6尤物| 韩国美女久久| 97伦理在线四区| 欧美日韩国产亚洲一区| 国产a级片视频| 午夜精品在线视频一区| 天天干天天干天天干| 欧美一级片免费在线| 美女亚洲一区| 杨幂毛片午夜性生毛片| 国产精品麻豆欧美日韩ww| 国产色视频在线| 久久久久五月天| 免费av一区| 久久撸在线视频| 91香蕉视频mp4| 无码人妻精品一区二区50| 国产亚洲精品久久久久久牛牛| 丁香花电影在线观看完整版| 久久99精品久久久久久秒播放器| 午夜片欧美伦| 大桥未久恸哭の女教师| 欧美性xxxxxxx| 人人干在线视频| 国产精品av网站| 午夜精品毛片| 东京热av一区| 夜夜夜精品看看| 欧美zozo| 91久久久久久久| 国产精品毛片一区二区三区| 我不卡一区二区| 欧美日韩一区二区免费视频| www.精品视频| 91chinesevideo永久地址| 日韩一区三区| 伊人网综合视频| 亚洲成人7777| av在线首页| 国产精品久久久久久久久久久久午夜片| 婷婷综合网站| 免费a v网站| 欧美精品黑人性xxxx| 交100部在线观看| 伊人久久青草| av一区二区三区|