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

RAG增強之路:增強PDF解析并結構化技術路線方案及思路 原創

發布于 2024-11-12 15:45
瀏覽
0收藏

前言

現階段,盡管大模型在生成式問答上取得了很大的成功,但由于大部分的數據都是私有數據,大模型的訓練及微調成本非常高,RAG的方式逐漸成為落地應用的一種重要的選擇方式。然而,如何準確的對文檔進行劃分chunks,成為一種挑戰,在現實中,大部分的專業文檔都是以 PDF 格式存儲,低精度的 PDF 解析會顯著影響專業知識問答的效果。因此,本文將介紹針對pdf,介紹一些pdf結構化技術鏈路供參考。

RAG增強之路:增強PDF解析并結構化技術路線方案及思路-AI.x社區

一、可編輯文檔

RAG增強之路:增強PDF解析并結構化技術路線方案及思路-AI.x社區

1.1 語義分段

經pdf解析工具后,原始文檔的段落信息全部丟失,需要進行段落的劃分和重組。下面介紹一種語義分段模型的訓練思路和一種開源的分段模型。

  • 語義分段訓練思路

RAG增強之路:增強PDF解析并結構化技術路線方案及思路-AI.x社區

RAG增強之路:增強PDF解析并結構化技術路線方案及思路-AI.x社區

  • 開源的模型

from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks

p = pipeline(
    task=Tasks.document_segmentation,
    model='damo/nlp_bert_document-segmentation_chinese-base')

result = p(documents='移動端語音喚醒模型,檢測關鍵詞為“小云小云”。模型主體為4層FSMN結構,使用CTC訓練準則,參數量750K,適用于移動端設備運行。模型輸入為Fbank特征,輸出為基于char建模的中文全集token預測,測試工具根據每一幀的預測數據進行后處理得到輸入音頻的實時檢測結果。模型訓練采用“basetrain + finetune”的模式,basetrain過程使用大量內部移動端數據,在此基礎上,使用1萬條設備端錄制安靜場景“小云小云”數據進行微調,得到最終面向業務的模型。后續用戶可在basetrain模型基礎上,使用其他關鍵詞數據進行微調,得到新的語音喚醒模型,但暫時未開放模型finetune功能。')

print(result[OutputKeys.TEXT])
# 輸出
'''
   移動端語音喚醒模型,檢測關鍵詞為“小云小云”。模型主體為4層FSMN結構,使用CTC訓練準則,參數量750K,適用于移動端設備運行。模型輸入為Fbank特征,輸出為基于char建模的中文全集token預測,測試工具根據每一幀的預測數據進行后處理得到輸入音頻的實時檢測結果。
   模型訓練采用“basetrain + finetune”的模式,basetrain過程使用大量內部移動端數據,在此基礎上,使用1萬條設備端錄制安靜場景“小云小云”數據進行微調,得到最終面向業務的模型。后續用戶可在basetrain模型基礎上,使用其他關鍵詞數據進行微調,得到新的語音喚醒模型,但暫時未開放模型finetune功能。
'''

二、可編輯文檔(掃描件)

2.1 版面分析

RAG增強之路:增強PDF解析并結構化技術路線方案及思路-AI.x社區

版面分析指的是對圖片形式的文檔(掃描件)進行區域劃分,通過bounding box定位其中的關鍵區域,如:文字、標題、表格、圖片等,通常采用一些CV目標檢測模型進行版式分析,如:參數量大的有:DINO等基于transformer的目標檢測模型;參數量小的有MaskRCNN、YOLO系列等。

版式分析的優勢,通過大量標注的數據,準確的劃分出文檔關鍵區域,如下:

  • 文本區域:頁眉、頁腳、標題、段落、頁碼、腳注、圖片標題、表格標題等
  • 表格
  • 公式
  • 圖片

2.2 文本識別

對于經由版式分析劃分出來的文本區域,通常采用OCR進行相應區域的文字識別,常見的開源OCR識別工具有讀光OCR、PaddleOCR等,以下是PaddleOCR的使用例子:

import cv2
from paddleocr import PaddleOCR
paddleocr = PaddleOCR(lang='ch', show_log=False, enable_mkldnn=True) 
img = cv2.imread('1.jpg')  
result = paddleocr.ocr(img)
for i in range(len(result[0])):
    print(result[0][i][1][0])   # 輸出識別結果

然而,像paddleOCR等開源ocr方式,在實際應用中還是存在很多的問題,如:

  • 漏識別:開源的一些ocr模型通常有檢測和識別兩階段構成,如果檢測模型檢測不準,將會錯誤累積,ocr識別時也不準確。
  • 識別文字錯誤:開源模型畢竟免費,沒有在特定的領域場景上進行特定的訓練,因此在識別時難免出現錯誤。

2.3 表格解析

對于經由版式分析劃分出來的表格區域,通常采用表格解析模型進行解析,并轉化為特定的格式,如:csv、html、markdown格式等。常見的開源模型有ppstructure等,如下:

import os
import cv2
from paddleocr import PPStructure,save_structure_res
table_engine = PPStructure(layout=False, show_log=True) 
save_folder = './output'
img_path = 'table.jpg'
img = cv2.imread(img_path)
result = table_engine(img)
save_structure_res(result, save_folder, os.path.basename(img_path).split('.')[0])
for line in result:
    line.pop('img')
    print(line)

在實際使用過程中,常見的開源方法經常遇到的問題就是,無法準確的對表格進行解析,這種問題常見與復雜表格,尤其是表格合并單元格時,容易解析錯誤,行列不對齊等。

2.4 公式解析

RAG增強之路:增強PDF解析并結構化技術路線方案及思路-AI.x社區

對于經由版式分析劃分出來的公式區域,通常采用公式解析模型進行解析,并轉化為特定的格式,如:tex等。

下面是一個使用LatexOCR進行公式解析的例子:

from PIL import Image
from pix2tex.cli import LatexOCR

model = LatexOCR()
img = Image.open('1.jpg')
print(model(img))

三、閱讀順序

經上述解析后,需要根據boungding box進行排序,以便恢復文檔的格式信息。下面將介紹一種基于規則的方法和一種基于Layoutreader模型的方法。

RAG增強之路:增強PDF解析并結構化技術路線方案及思路-AI.x社區

  • xy-cut

import numpy as np

def xy_cut(bboxes, directinotallow="x"):
    result = []
    K = len(bboxes)
    indexes = range(K)
    if len(bboxes) <= 0:
        return result
    if direction == "x":
        # x first
        sorted_ids = sorted(indexes, key=lambda k: (bboxes[k][0], bboxes[k][1]))
        sorted_boxes = sorted(bboxes, key=lambda x: (x[0], x[1]))
        next_dir = "y"
    else:
        sorted_ids = sorted(indexes, key=lambda k: (bboxes[k][1], bboxes[k][0]))
        sorted_boxes = sorted(bboxes, key=lambda x: (x[1], x[0]))
        next_dir = "x"

    curr = 0
    np_bboxes = np.array(sorted_boxes)
    for idx in range(len(sorted_boxes)):
        if direction == "x":
            # a new seg path
            if idx != K - 1 and sorted_boxes[idx][2] < sorted_boxes[idx + 1][0]:
                rel_res = xy_cut(sorted_boxes[curr:idx + 1], next_dir)
                result += [sorted_ids[i + curr] for i in rel_res]
                curr = idx + 1
        else:
            # a new seg path
            if idx != K - 1 and sorted_boxes[idx][3] < sorted_boxes[idx + 1][1]:
                rel_res = xy_cut(sorted_boxes[curr:idx + 1], next_dir)
                result += [sorted_ids[i + curr] for i in rel_res]
                curr = idx + 1

    result += sorted_ids[curr:idx + 1]
    return result


def augment_xy_cut(bboxes,
                   directinotallow="x",
                   lambda_x=0.5,
                   lambda_y=0.5,
                   theta=5,
                   aug=False):
    if aug is True:
        for idx in range(len(bboxes)):
            vx = np.random.normal(loc=0, scale=1)
            vy = np.random.normal(loc=0, scale=1)
            if np.abs(vx) >= lambda_x:
                bboxes[idx][0] += round(theta * vx)
                bboxes[idx][2] += round(theta * vx)
            if np.abs(vy) >= lambda_y:
                bboxes[idx][1] += round(theta * vy)
                bboxes[idx][3] += round(theta * vy)
            bboxes[idx] = [max(0, i) for i in bboxes[idx]]
    res_idx = xy_cut(bboxes, directinotallow=direction)
    res_bboxes = [bboxes[idx] for idx in res_idx]
    return res_idx, res_bboxes


bboxes = [[58.54924774169922, 1379.6373291015625, 1112.8863525390625, 1640.0870361328125],
          [60.1091423034668, 483.88677978515625, 1117.4927978515625, 586.197021484375],
          [57.687435150146484, 1098.1053466796875, 387.9796142578125, 1216.916015625],
          [63.158992767333984, 311.2080993652344, 1116.2508544921875, 365.2145080566406],
          [138.85513305664062, 144.44039916992188, 845.18017578125, 198.04937744140625],
          [996.1032104492188, 1053.6279296875, 1126.1046142578125, 1071.3463134765625],
          [58.743492126464844, 634.3077392578125, 898.405029296875, 700.9544677734375],
          [61.35755920410156, 750.6771240234375, 1051.1060791015625, 850.3980712890625],
          [426.77691650390625, 70.69780731201172, 556.0884399414062, 109.58145141601562],
          [997.040283203125, 903.5933227539062, 1129.2984619140625, 921.10595703125],
          [59.40523910522461, 1335.1563720703125, 329.7382507324219, 1357.46533203125],
          [568.9025268554688, 14.365530967712402, 1087.898193359375, 32.60292434692383],
          [998.1250610351562, 752.936279296875, 1128.435546875, 770.4116821289062],
          [59.6968879699707, 947.9129638671875, 601.4513549804688, 999.4548950195312],
          [58.91489028930664, 1049.8773193359375, 487.3372497558594, 1072.2935791015625],
          [60.49456024169922, 902.8802490234375, 600.7571411132812, 1000.3502197265625],
          [60.188941955566406, 247.99755859375, 155.72970581054688, 272.1385192871094],
          [996.873291015625, 637.3861694335938, 1128.3558349609375, 655.1572875976562],
          [59.74936294555664, 1272.98828125, 154.8768310546875, 1295.870361328125],
          [58.835716247558594, 1050.5926513671875, 481.59027099609375, 1071.966796875],
          [60.60163116455078, 750.1132202148438, 376.1781921386719, 771.8764038085938],
          [57.982513427734375, 419.16058349609375, 155.35882568359375, 444.25115966796875],
          [1017.0194091796875, 1336.21826171875, 1128.002197265625, 1355.67724609375],
          [1019.8740844726562, 486.90814208984375, 1127.482421875, 504.61767578125]]

res_idx, res_bboxes = augment_xy_cut(bboxes, directinotallow="y")
print(res_idx)
# res_idx, res_bboxes = augment_xy_cut(bboxes, directinotallow="x")
# print(res_idx)

new_boxs = []
for i in res_idx:
    # print(i)

    new_boxs.append(bboxes[i])

print(new_boxs)

import torch
from model import LayoutLMv3ForBboxClassification
from collections import defaultdict

CLS_TOKEN_ID = 0
UNK_TOKEN_ID = 3
EOS_TOKEN_ID = 2


def BboxesMasks(boxes):
    bbox = [[0, 0, 0, 0]] + boxes + [[0, 0, 0, 0]]
    input_ids = [CLS_TOKEN_ID] + [UNK_TOKEN_ID] * len(boxes) + [EOS_TOKEN_ID]
    attention_mask = [1] + [1] * len(boxes) + [1]
    return {
        "bbox": torch.tensor([bbox]),
        "attention_mask": torch.tensor([attention_mask]),
        "input_ids": torch.tensor([input_ids]),
    }


def decode(logits, length):
    logits = logits[1: length + 1, :length]
    orders = logits.argsort(descending=False).tolist()
    ret = [o.pop() for o in orders]
    while True:
        order_to_idxes = defaultdict(list)
        for idx, order in enumerate(ret):
            order_to_idxes[order].append(idx)
        order_to_idxes = {k: v for k, v in order_to_idxes.items() if len(v) > 1}
        if not order_to_idxes:
            break
        for order, idxes in order_to_idxes.items():
            idxes_to_logit = {}
            for idx in idxes:
                idxes_to_logit[idx] = logits[idx, order]
            idxes_to_logit = sorted(
                idxes_to_logit.items(), key=lambda x: x[1], reverse=True
            )
            for idx, _ in idxes_to_logit[1:]:
                ret[idx] = orders[idx].pop()
    return ret


def layoutreader(bboxes):
    inputs = BboxesMasks(bboxes)
    logits = model(**inputs).logits.cpu().squeeze(0)
    orders = decode(logits, len(bboxes))
    return orders


if __name__ == '__main__':
    bboxes = [[584, 0, 595, 1], [35, 120, 89, 133],
              [35, 140, 75, 152]]
    model_path = ""
    model = LayoutLMv3ForBboxClassification.from_pretrained()

    print(layoutreader(bboxes))
# [1, 2, 0]

總結

本文詳細介紹了可編輯pdf和不可編輯pdf(掃描件)的一些開源技術方案和路線,整個技術鏈路是一個pipline的路線,每一個步驟都需要精細的優化。在RAG中,準確的劃分chunks,需要依賴文檔的版式分析的精準性。因此,尤其是在對文檔進行版面分析時,目標檢測的粒度及標簽需要對落地場景進行特定的分析,不要妄想著存在一個通用的版式分析模型解決一切文檔版式分析問題。

參考文獻

  • LaTeX-OCR:https://github.com/lukas-blecher/LaTeX-OCR
  • PaddleOCR:https://github.com/PaddlePaddle/PaddleOCR
  • 語義分段模型,https://modelscope.cn/models/iic/nlp_bert_document-segmentation_chinese-base/summary

本文轉載自公眾號大模型自然語言處理  作者:余俊暉

原文鏈接:??https://mp.weixin.qq.com/s/UOPDuv9hi2MJEhOHM_TZ8A??




?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
已于2024-11-28 18:54:06修改
收藏
回復
舉報
回復
相關推薦
欧美成人xxxxx| 免费精品视频一区二区三区| 亚洲一级生活片| 136国产福利精品导航网址应用| 亚洲成人免费在线观看| 蜜桃视频日韩| 国产精品高潮呻吟av| 国产精品99一区二区| 亚洲美女av电影| av在线免费看片| 日本三级一区| 亚洲人一二三区| 久久亚洲一区二区| 国产成人久久精品77777综合 | 成人毛片100部免费看| 五月激情丁香婷婷| 国产制服丝袜一区| 青青草一区二区| 欧美成欧美va| 成人在线亚洲| 日韩电影大片中文字幕| 香蕉视频xxxx| 欧美风情在线视频| 日韩欧美亚洲综合| 美女扒开大腿让男人桶| 精品国产99久久久久久| 91视频在线看| 国产精品国产一区二区| 亚洲天堂网视频| 久久精品毛片| 5566日本婷婷色中文字幕97| 亚洲欧美一区二区三区四区五区| 成人在线电影在线观看视频| 亚洲精品三区| 精品久久久99| 午夜精品免费视频| 久久这里只有精品视频网| av成人免费| 国产亚洲精品久久久久久打不开| 在线国产99| 98精品国产自产在线观看| 久久午夜夜伦鲁鲁一区二区| 99久久精品免费看国产小宝寻花| 一色桃子久久精品亚洲| 日韩美女一区| 国产在线免费观看| 久久综合成人精品亚洲另类欧美 | 黄色免费av网站| 精品视频在线你懂得| 韩国精品一区二区| 国产精品电影一区| 少妇高潮av久久久久久| 夜夜嗨av一区二区三区网站四季av| 欧美另类精品xxxx孕妇| 青草草在线视频| 欧美99久久| 欧美精品在线播放| 久久久国产精华液| 国语精品一区| 91国产视频在线| 伊人手机在线视频| 亚洲在线免费| 国产精品mp4| jizz国产在线| 麻豆精品久久久| 成人福利网站在线观看| 国产伦子伦对白视频| 国产麻豆一精品一av一免费 | 国产日产精品一区| 日韩高清dvd| 最近高清中文在线字幕在线观看| 国产精品久久久久久久久晋中| 亚洲巨乳在线观看| 自由的xxxx在线视频| 亚洲午夜免费电影| 日韩在线视频在线观看| 亚洲精品国产嫩草在线观看| 欧美日韩一区二区三区视频| 不用播放器的免费av| 久久天堂久久| 亚洲精品国产电影| 四虎国产精品成人免费入口| 日韩中文首页| 欧美精品videosex性欧美| 欧美 日韩 精品| 久久99精品久久久久久国产越南 | 一区二区三区久久久| 日韩日韩日韩日韩日韩| 韩国精品主播一区二区在线观看| 欧美精品丝袜久久久中文字幕| 男人女人拔萝卜视频| 日韩av影院| 日韩中文第一页| 久久久久久久久久久久久久免费看| 亚洲少妇在线| 国产情人节一区| 天堂在线中文网| 国产日韩精品一区二区三区在线| 久久免费视频2| 天堂中文av在线资源库| 欧美日本一区二区在线观看| 精品人妻伦一二三区久| 欧美丰满日韩| 欧美亚洲在线视频| 国产成人精品亚洲精品色欲| 久久综合久久鬼色| 国产精品日韩三级| 成人免费毛片嘿嘿连载视频…| 日韩三级精品电影久久久| 少妇无套高潮一二三区| 亚洲视频免费| 成人免费直播live| 久久精品国产亚洲a∨麻豆| 亚洲精品高清视频在线观看| 少妇高清精品毛片在线视频| 视频一区视频二区欧美| 中日韩美女免费视频网址在线观看| 日本一区二区不卡在线| 免费观看一级特黄欧美大片| 久久国产精品99久久久久久丝袜| av黄色在线| 欧美日韩一级二级| 中国极品少妇videossexhd| 91成人精品视频| 国产精品成人v| 天堂中文在线看| 亚洲精品视频观看| 三上悠亚在线一区| 禁断一区二区三区在线| 26uuu久久噜噜噜噜| 亚洲AV无码一区二区三区性 | 成人综合婷婷国产精品久久免费| 亚洲 日韩 国产第一区| 超级碰碰久久| 日韩精品有码在线观看| 久久久久久久久久久久国产| 国产精品中文字幕日韩精品 | 国产一区二区三区黄| 国产网站在线免费观看| 欧美日韩国产高清一区二区三区| 久久精品—区二区三区舞蹈| 久久精品日产第一区二区 | 可以免费观看的毛片| 亚洲欧美视频一区| 亚洲涩涩在线观看| 999国产精品| 国产日韩中文字幕在线| 午夜激情视频在线| 欧美日韩国产一级二级| jizz日本在线播放| 久久精品999| 中文字幕欧美人与畜| 欧美一区=区三区| 北条麻妃久久精品| 国产手机av在线| 亚洲黄色av一区| av在线天堂网| 最新成人av网站| 国产日韩亚洲精品| 永久免费毛片在线播放| 亚洲美女在线看| 亚洲av无码不卡| 欧美经典一区二区| 蜜臀一区二区三区精品免费视频| 五月婷婷亚洲| 成人免费观看网站| 国产激情视频在线看| 亚洲美女激情视频| 在线观看视频二区| 亚洲乱码日产精品bd| 韩国三级视频在线观看| 亚洲一区国产一区| 亚洲国产精品久久久久婷婷老年| 最新亚洲国产| 97视频在线观看网址| 你懂的在线网址| 欧美日韩亚洲综合| 毛片a片免费观看| 99精品国产99久久久久久白柏| 日本xxxxxxx免费视频| 久久综合电影| 99影视tv| 欧美电影免费观看网站| 日韩一区二区欧美| 亚州男人的天堂| 欧美日韩精品一二三区| 精品无码久久久久| 国产网红主播福利一区二区| 国产精品区在线| 影音先锋亚洲精品| 日韩免费av一区二区三区| 日韩一区二区三区色| 日韩av不卡在线| 色呦呦在线视频| 亚洲日本成人女熟在线观看| 99久久精品无免国产免费| 欧美日韩一区二区免费视频| 国产喷水在线观看| 91在线观看一区二区| 手机免费看av网站| 午夜影院日韩| 六月婷婷激情网| 黑人操亚洲人| 国产精品露出视频| 成人国产精品久久| 日本一区二区不卡| 超碰97免费在线| 日韩中文字幕在线免费观看| 青青国产在线| 欧美一级久久久| 中文字幕av影视| 舔着乳尖日韩一区| 天天综合天天做| 国产女主播在线一区二区| 国产精品入口麻豆| 国产一区二区三区日韩| 国产激情在线观看视频| 在线精品在线| 国产女人18毛片| 日韩欧美视频专区| 日本免费高清不卡| 亚洲资源网站| 国产精品久久久久久久久久久久午夜片 | 日本成人激情视频| 成人一级福利| 欧美黑人极品猛少妇色xxxxx | 亚洲天堂精品在线观看| 最新中文字幕av| 久久精品夜色噜噜亚洲aⅴ| 中文字幕在线视频播放| 国产成人精品一区二区三区四区 | 欧美国产精品日韩| 成人黄视频在线观看| 中文字幕精品网| 国产三级在线免费| 精品中文字幕久久久久久| 丁香花免费高清完整在线播放| 欧美精选午夜久久久乱码6080| 国产精品高清无码| 在线一区二区三区四区| 69视频免费看| 91福利资源站| 国产精品无码粉嫩小泬| 色噜噜狠狠一区二区三区果冻| 中文字幕精品无码一区二区| 欧美日韩国产综合新一区| 91蜜桃视频在线观看| 午夜国产精品影院在线观看| 日本熟女一区二区| 精品久久久久久电影| 日韩污视频在线观看| 午夜精品福利在线| 久久亚洲精品国产| 日韩欧美主播在线| 老熟妇仑乱一区二区av| 色综合久久中文综合久久牛| 黄色污污视频软件| 欧美三级韩国三级日本三斤| 在线视频1卡二卡三卡| 欧美人妇做爰xxxⅹ性高电影| 91av久久久| 日韩三级视频在线看| 嫩草影院一区二区| 亚洲美女av黄| 日本天堂在线观看| 久久999免费视频| 91资源在线观看| 日韩**中文字幕毛片| 91精品网站在线观看| 成人在线观看91| 美女毛片一区二区三区四区| 日韩精品在在线一区二区中文| 99精品综合| 拔插拔插海外华人免费| 丝袜美腿成人在线| 超碰91在线播放| a在线播放不卡| 精品一区二区三区蜜桃在线| 亚洲女爱视频在线| 日韩毛片在线播放| 欧美性生交片4| 性欧美18一19性猛交| 亚洲精品一区二区三区婷婷月| 91精彩视频在线观看| 欧美高跟鞋交xxxxxhd| 波多野结衣亚洲| 亚洲xxxxx性| 亚洲黄色录像| 干日本少妇视频| 午夜亚洲性色福利视频| 在线a免费观看| 91美女在线视频| 午夜剧场免费在线观看| 精品久久久久久中文字幕| 在线观看免费黄色小视频| 精品福利一区二区三区免费视频| 国产一级片在线播放| 欧美xxxx18性欧美| 色8久久影院午夜场| av在线不卡一区| 精品国产一区二区三区| av女优在线播放| 狠狠色狠狠色综合| 成人精品999| 亚洲国产日韩一级| 在线观看黄色网| 日韩高清中文字幕| 色屁屁www国产馆在线观看| 国产精品久久久久久久久久免费| 米奇精品关键词| 亚洲色图都市激情| 日本aⅴ精品一区二区三区 | 国产成人三级一区二区在线观看一 | 日韩欧美色视频| 国产女人18水真多18精品一级做| 亚洲一区二区91| 欧美一级高清大全免费观看| 福利在线播放| 欧美一级视频在线观看| 永久免费精品视频| 波多野结衣三级在线| 免费视频一区二区| 精品少妇人妻一区二区黑料社区| 亚洲主播在线播放| 一区二区三区www污污污网站| 亚洲天堂av在线免费| 成人免费网站观看| 国产伦精品一区二区三区免费视频| 亚洲一级毛片| 午夜天堂在线视频| 国产精品麻豆网站| 波多野结衣视频观看| 亚洲欧美日韩中文视频| 天堂av中文在线观看| 精品久久久久久一区二区里番| 亚洲无毛电影| 国产免费无码一区二区| 亚洲精品免费在线| 国产免费的av| 欧美精品在线播放| 亚洲精品福利| 日韩国产一级片| www.欧美.com| 成人午夜淫片100集| 亚洲乱码一区av黑人高潮| 在线高清av| 日韩激情视频| 免费精品视频在线| 亚洲xxxx3d动漫| 日韩欧美中文字幕一区| 手机在线免费av| 成人资源av| 亚洲精品1区| 中文字幕在线观看的网站| 欧美色视频日本版| 久久久久久久久亚洲精品| 国产成人在线精品| 日韩国产在线| 香蕉视频xxxx| 天天综合色天天综合色h| 青青久草在线| 国产综合在线观看视频| 午夜精品视频| 麻豆精品国产传媒av| 欧美性xxxxx极品娇小| 国产午夜在线视频| 成人免费午夜电影| 亚洲国产一区二区三区a毛片| 蜜臀av一区二区三区有限公司| 在线中文字幕不卡| av文字幕在线观看| 国产在线精品一区二区三区| 久久久999| 91麻豆免费视频网站| 亚洲国产精品嫩草影院久久| 91看片一区| 菠萝蜜视频在线观看入口| 99视频精品在线| 亚洲一区二区三区高清视频| 精品少妇一区二区30p| 香蕉视频一区| www.色就是色.com| 婷婷综合另类小说色区| 91大神xh98hx在线播放| 国产98在线|日韩| 久热国产精品| 麻豆成人在线视频| 伊人久久大香线蕉av一区二区| 日韩视频1区| 国产一区二区视频免费在线观看 | 二区视频在线观看| 日韩中文字幕在线播放| 精品国产一区二区三区成人影院 | 成年人视频网站免费| 久久久久久久久99精品| 国产wwwwwww| 国产成+人+综合+亚洲欧美丁香花| 欧美一区免费| japanese中文字幕| 精品精品国产高清一毛片一天堂|